Android-使用友盟分享微信小程序到微信

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 这两个类。

在自定义的 BaseApplicationonCreate 方法中需要注册友盟

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() {
// 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
// 参数一:当前上下文context;
// 参数二:应用申请的Appkey;
// 参数三:渠道名称;
// 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
// 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
UMConfigure.init(this, 应用在友盟申请的Appkey, Umeng, UMConfigure.DEVICE_TYPE_PHONE, 没有使用推送服务,传空字符串就行);

//开通微信分享 第一个值为app在微信注册时的AppID 第二个值是你们软件注册时的AppSecret
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()));

// 小程序消息title
umMin.setTitle(listBean.getTitle());

//小程序页面路径
umMin.setPath(/pages/小程序对应的页面链接);

//小程序原始id,在微信平台查询
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();
}

注意:在分享小程序之前是必须要设置小程序的版本的,不然点开微信链接会报错

Author

Pinguoooo

Posted on

2021-06-25

Updated on

2021-06-25

Licensed under

Comentarios

:D 一言句子获取中...

Loading...Wait a Minute!