分享集成
现在的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,权限添加:
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) ;//发送请求
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版本。