使用友盟分享到微信的时候, 成功或者之后点击回到APP的时候,会出现白屏页面,点击返回才能回去
集成的官方文档官方文档 : http://dev.umeng.com/social/android/operation#2
登录微信开放平台https://open.weixin.qq.com/官网, 审核通过后获取到微信AppID及AppSecret(注意保存),需要微信登录功能,需要申请微信登录权限
首先到友盟官网http://www.umeng.com/下载需要的SDK包。复制jar包到自己的项目中。
1、添加回调Activity
包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下.
2、权限及其他maifest中的配置
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
- 相关Activity注册
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- 在AndroidManifest.xml中设置友盟Appkey
<meta-data
android:name="UMENG_APPKEY"
android:value="你的key">
</meta-data>
- 在application类中配置第三方信息
// <!-- 微信平台 --> appid appsecret
PlatformConfig.setWeixin("替换成自己appid","替换成自己的appsecret");
在application的oncreat方法中初始化
UMShareAPI.get(this);
6、分享
回调相关配置
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
通过如下代码打开分享面板选择页
UMWeb web = new UMWeb(path);//path是一个图片地址
web.setTitle("欢迎使用");//标题
web.setDescription("这里是你的描述");//描述
new ShareAction(MainActivity.this)
//分享到 weixin 和微信朋友圈
.setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE)
.withMedia(web)
.setCallback(shareListener)//回调监听器
.open();
如果只需要分享到朋友圈 :
new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
.withMedia(web)
.setCallback(shareListener)//回调监听器
.share();
umShareListener为回调监听,相关分享结果都在回调监听中获取
构建如下,其中分享成功会回调onComplete,取消分享回调onCancel,分享错误回调onError,对应的错误信息可以用过onError的Throwable参数来打印
private UMShareListener umShareListener = new UMShareListener() {
@Override
public void onResult(SHARE_MEDIA platform) {
Log.d("plat","platform"+platform);
Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(MainActivity.this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
if(t!=null){
Log.d("throw","throw:"+t.getMessage());
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();
}
};
登录不回调可能的情况:
1、WXEntryActivity 的路径有问题
2、微信官网的配置要求很严格 程序目录的包名必须与配置文件的包名还有微信开放平台配置的包名完全一致。否则会出现回调无反应现象。(遇到过的)
3、微信未获取登录权限。(一般审核通过就自动获取登录权限)
参考: https://blog.csdn.net/qq_15855289/article/details/54969106