1.申请应用的AppID
移动应用要想接入微信分享功能,得先到微信开放平台创建并提交审核,只有审核通过的应用才能进行开发。具体参考微信开放平台创建移动应用。
2.AndroidStudio集成微信SDK
- 在 build.gradle 文件中,添加如下依赖即可:
dependencies {
api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}
(从6.8.0版本开始,请使用 wechat-sdk-android )
- 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可:
buildscript {
repositories {
jcenter() // 原有 jCenter 引用可继续保留
mavenCentral()
}
}
allprojects {
repositories {
jcenter() // 原有 jCenter 引用可继续保留
mavenCentral()
}
}
特别注意,目前 Maven Central仅支持部分版本:6.6.4、6.6.5、6.6.23、6.7.0、6.7.9、6.8.0,建议开发者升级至最新版本6.8.0。后续所有版本更新都会上传至Maven Central。
3.注册到微信
要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的 AppID。(如下图所示,可以在程序入口 Activity 的 onCreate 回调函数处,或其他合适的地方将你的应用 id 注册到微信。注册函数示例如下图所示。
// APP_ID 替换为你的应用从官方网站申请到的合法AppID
private static final String APP_ID = "wx123456";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;
private regToWx() {
// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(APP_ID);
//建议动态监听微信启动广播进行注册到微信
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 将该app注册到微信
api.registerApp(Constants.APP_ID);
}
}, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
}
4.发送分享请求到微信
通过 IWXAPI 的 sendReq来实现,sendReq 是第三方 app 主动发送消息给微信,发送完成之后会切回到第三方 app 界面。下面是发送网页的示例:
//初始化一个WXWebpageObject,填写url
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl ="网页url";
//用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title ="网页标题 ";
msg.description ="网页描述";
Bitmap thumbBmp = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb);
msg.thumbData =Util.bmpToByteArray(thumbBmp, true);
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message =msg;
req.scene =mTargetScene;
req.userOpenId = getOpenId();
//调用api接口,发送数据到微信
api.sendReq(req);
需要注意的是,SendMessageToWX.Req 的 scene 成员,如果 scene 填 WXSceneSession,那么消息会发送至微信的会话内。如果 scene 填 WXSceneTimeline,那么消息会发送至朋友圈。scene 默认值为 WXSceneSession。
5.接收微信的请求及返回值
发送分享请求后,想知道请求的返回结果,需要下面3步操作:
a. 在你的包名相应目录下新建一个 wxapi 目录,并在该 wxapi 目录下新增一个 WXEntryActivity 类,该类继承自 Activity(例如应用程序的包名为 com.xu.sharetime,则新添加的类如下图所示)
并在 manifest 文件里面加上exported、taskAffinity及launchMode属性,其中exported设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:
<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="true"
android:taskAffinity="填写你的包名"
android:launchMode="singleTask">
</activity>
b. 实现 IWXAPIEventHandler 接口,微信发送的请求将回调到 onReq 方法,发送到微信请求的响应结果将回调到 onResp 方法。
c. 在 WXEntryActivity 的onCreate方法中将接收到的 intent 及实现了 IWXAPIEventHandler 接口的对象传递给 IWXAPI 接口的 handleIntent 方法,示例如下图:
api.handleIntent(getIntent(), this);
应用请求微信的响应结果将通过 onResp 回调。
6.运行工程
运行工程,需要通过指定的.keystore来签名
signingConfigs {
debug {
storeFile file("../debug.keystore")
}
}
注:这里和创建应用时的签名要保持一致,否则分享失败。
本文参考微信开放平台移动应用开发:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Resource_Center_Homepage.html
网友评论