我的第一篇博客,记录我的Android学习之旅。今天学习了安卓微信分享,查看了开发文档并看了前辈们的经验分享,终于成功集成到我的应用中。现在从零开始一步一步集成:
一、https://open.weixin.qq.com/先到微信开放平台审核通过一个APP,通过后官方会给你这个AppID:
二、查看开发信息,需要输入两个信息,一个是应用包名,就是你自己的APP包名,另一个是签名,需要下载一个官方的一个签名生成工具来获取。
三、获得了APPID和签名后就可以开始集成了,先下载最新的官方SDK包。
下好之后再libs目录下复制jar包到自己工程的libs目录,添加依赖。
然后查看官方Demo中有个Contants类,复制到自己工程下,然后在Constant中添加你自己的Appid:
public class Constants {
// APP_ID 替换为你的应用从官方网站申请到的合法appId
public static final String APP_ID = "xxxxxxxxxxxxxx";
public static class ShowMsgActivity {
public static final String STitle = "showmsg_title";
public static final String SMessage = "showmsg_message";
public static final String BAThumbData = "showmsg_thumb_data";
}
}
接下来添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>
然后在初始化的时候添加wxApi的两句语句(也可以在继承了application的类中进行初始化,前提是记得要在AndroidManifest中写app的name):
private IWXAPI wxApi;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_information, container, false);
ButterKnife.bind(this, inflate);
//实例化
wxApi = WXAPIFactory.createWXAPI(getActivity(), Constants.APP_ID);
wxApi.registerApp(Constants.APP_ID);
return inflate;
}
然后根据官网介绍,它有请求和响应两个类来与微信进行交互:
请求:(flag==0时发送给朋友,flag==1时发送到朋友圈,默认发送给朋友)
/**
* 微信分享 (这里仅提供一个分享网页的示例,其它请参看官网示例代码)
* @param flag(0:分享到微信好友,1:分享到微信朋友圈)
*/
private void wechatShare(int flag){
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "www.baidu.com";
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "title";
msg.description = "description";
//这里替换一张自己工程里的图片资源
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
msg.setThumbImage(thumb);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = flag==0?SendMessageToWX.Req.WXSceneSession:SendMessageToWX.Req.WXSceneTimeline;
wxApi.sendReq(req);
}
响应:只需写一个类来实现IWXAPIEventHandler接口,重写onReq()和onResp()方法就可以达到回调的效果(我自己用的时候虽然分享成功了却没有效果)。
package com.tencent.mm.sdk.openapi;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
public interface IWXAPIEventHandler {
void onReq(BaseReq var1);
void onResp(BaseResp var1);
}
结束,收工!