分享集成
现在的APP大都会包含分享部分,分享的集成平台也很多,如SharedSDK,友盟等等,但是这些分享都是统一实现差异化分享,进行多方的差异化配置进而实现相关的分享,但是我们开发时候有时候只需要进行最常用的微信分享就可以实现,所以学习原生的分享集成是有必要的,另外原生的分享由于实现特定的平台分享,集成包也比较小,有利于我们的APP实现瘦身,下面开始介绍分享的实现。
1,微信开放平台进行app注册(https://open.weixin.qq.com/),进行相关的注册,拿到appid。
2,注册时候需要生成应用签名,可获取工具输入包名获取相关签名,注意安装的包必须是正式签名的包(即release,不是debug),资源地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
3,资源下载,资源地址同2,下载第一个android开发工具包即可。
4,下载解压得到libammsdk.jar拷贝到libs目录,同时添加依赖。
5,权限添加:
<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"/>
6,注册应用到微信,一般建议在application的onCreate中完成,也可在入口activity的onCreate中完成。
private static final String Weixin_id = "appid";
public static IWXAPI WeixinAPI;
WeixinAPI = WXAPIFactory.createWXAPI(this, Weixin_id, true);
WeixinAPI.registerApp(Weixin_id); 7,分享实现:
微信分享可分享文字、图片、音乐、视频、网页等,这里介绍最常用的网页分享。
WXWebpageObject wxWebpageObject = new WXWebpageObject();
wxWebpageObject.webpageUrl = url;//设置跳转的url
final WXMediaMessage mediaMessage = new WXMediaMessage(wxWebpageObject);
mediaMessage.title = this.title;//设置标题
mediaMessage.description = this.content;//设置内容
mBitmap = BitmapFactory.decodeStream(new URL(picPath).openStream());
Bitmap bitmap = Bitmap.createScaledBitmap(mBitmap,96,96,true);
mediaMessage.thumbData = BitmapToBytesUtil.Bitmap2Bytes(bitmap);//图片加工
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = "webpage";//分享类型为网页
req.message = mediaMessage;//分享的内容为上面的信息
req.scene = SendMessageToWX.Req.WXSceneSession;//设置分享到微信好友
req.scene = SendMessageToWX.Req.WXSceneTimeline;//设置分享到微信朋友圈PigeonApp.WeixinAPI.sendReq(req);//发送请求8,分享结果,创建类实现结果回调,代码如下:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PigeonApp.WeixinAPI.handleIntent(getIntent(),this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
String result = "";
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = "分享成功";
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = "分享取消";
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = "分享被拒绝";
break;
default:
result = "分享返回";
break;
}
ToastUtils.getInstance(this).showToast(result,false);
finish();
}
} 根据回调结果进行相关的业务处理即可。
如遇到分享自动返回情况,则确定此处的签名是否是release版本。