Android使用友盟分享微信小程序到微信
在友盟官网上看到了相关的API,但是总是无法正常调用,下面记录下自己的处理流程:
引入依赖
1 2 3 4 5
| implementation 'com.umeng.umsdk:common:2.2.5' implementation 'com.umeng.umsdk:share-core:7.0.2' implementation 'com.umeng.umsdk:share-board:7.0.2'
implementation 'com.umeng.umsdk:share-wx:7.0.2'
|
添加所需权限,创建微信所需的Activity
请在AndroidManifest中添加如下权限
1 2 3 4 5
| <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
|
并在AndroidManifest中添加如下代码(需要提前创建好Activity):
1 2 3 4 5 6 7
| <activity android:configchanges="keyboardHidden|orientation|screenSize" android:exported="true" android:launchmode="singleTask" android:name=".wxapi.WXEntryActivity" android:taskaffinity="net.sourceforge.simcpux" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity>
|
在你的项目包中创建wxapi
包,并创建WXEntryActivity.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {
private IWXAPI wxapi= BaseApplication.getInstance().getWxApi();
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); wxapi.handleIntent(intent, this); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); wxapi.handleIntent(getIntent(), this); }
@Override public void onReq(BaseReq baseReq) { LogUtils.d(baseReq:+baseReq.openId); }
@Override public void onResp(BaseResp baseResp) { if (baseResp.getType()==ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){ finish();
}else if(baseResp.getType()==ConstantsAPI.COMMAND_SENDAUTH){
LogUtils.d(返回授权+baseResp.errCode); switch (baseResp.errCode) { case BaseResp.ErrCode.ERR_OK: LogUtils.d(返回Code:+((SendAuth.Resp) baseResp).code); EventBus.getDefault().post(new EventMessage(CodeManager.BIND_PHONE,((SendAuth.Resp) baseResp).code)); break; case BaseResp.ErrCode.ERR_USER_CANCEL: case BaseResp.ErrCode.ERR_AUTH_DENIED: case BaseResp.ErrCode.ERR_UNSUPPORT: break; } finish(); } } }
|
由于我在项目中集成了其他微信相关的SDK,读者只用关注这个 WXEntryActivity
需要继承 WXCallbackActivity
以及实现 IWXAPIEventHandler
这两个类。
在自定义的 BaseApplication
的 onCreate
方法中需要注册友盟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ... @Override public void onCreate() { super.onCreate(); initUmeng(); }
private void initUmeng() { UMConfigure.init(this, 应用在友盟申请的Appkey, Umeng, UMConfigure.DEVICE_TYPE_PHONE, 没有使用推送服务,传空字符串就行);
PlatformConfig.setWeixin(wx*************, *******AppSecret****);
}
|
注意!这里一定要添加开通微信分享的代码,否则点击分享按钮将没有任何反应!!! PlatformConfig.setWeixin("wx*************", "*******AppSecret****");
分享小程序到微信
我将分享逻辑放在弹窗点击事件里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| private void showShareDialog(DistributionMyGoodsBean.ListBean listBean) { ShareDialog shareDialog = new ShareDialog(mContext, false); shareDialog.setOnButtonListener(new ShareDialog.OnButtonListener() { @Override public void onWeChatClick() { ToastUtils.showShort(微信分享); UMMin umMin = new UMMin(你想要兼容的网页链接,需要带上http:
umMin.setThumb(new UMImage(mContext, listBean.getImage()));
umMin.setTitle(listBean.getTitle());
umMin.setPath(/pages/小程序对应的页面链接);
umMin.setUserName(gh_***********);
Config.setMiniPreView();
Config.setMiniTest();
new ShareAction((Activity) mContext) .setPlatform(SHARE_MEDIA.WEIXIN) .withMedia(umMin) .setCallback(shareListener) .share(); }
@Override public void onCircleFriendsClick() { } }); shareDialog.show(); }
|
注意:在分享小程序之前是必须要设置小程序的版本的,不然点开微信链接会报错