本实例项目运行条件:
开发环境: 【Android Studio】
1. 到微信开放平台注册帐号并且创建移动应用
https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN
2. 获得移动应用的权限【分享到朋友圈】【发送给朋友】
这二个权限只要移动应用审核通过,默认有这二个权限(注意: 如果需要开通支付权限,需要付费)
3. 配置应用签名, 这个签名通过 android打包文件jks生成或者keystore生成
签名文件生成方法: 3.1 keytool -list -v -keystore jks文件(或者keystore文件)
3.2 获取指纹证书md5值, 将md5中的冒号去掉, 大写换成小写 (详情)
总结: 微信开放平台Android应用签名的本质便是我们签名文件jks(或者keystore)的MD5值
4. 应用程序开发完成后,debug模式是无法分享的,应用程序必须由相应的jks签名之后生成的apk包才能进行分享(微信会校验应用签名)
2 流程讲解
2.1 应用程序启动后,界面如下(图A), 点击底部【点击分享】后,弹出图B
图A 图B
2.2 点击弹出框的第一图标,可以将内容分享给朋友(图C)
点击弹出框的第二图新, 可以将内容分享到朋友圈(图D)
图C 图D
3. 代码讲解
3.1 主应用程序点击【分享按钮】
@OnClick(R.id.pay) public void pay(){ SharePopWin pop = new SharePopWin(MainActivity.this); pop.showAtLocation(getWindow().getDecorView().getRootView() , Gravity.BOTTOM| Gravity.CENTER_HORIZONTAL, 0, 0); }
3.2 SharePopWin分享代码
SendMessageToWX.Req.WXSceneSession: 分享给朋友
SendMessageToWX.Req.WXSceneTimeline : 分享到朋友圈
private void wechatShare(int flag){ WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = "http://www.baidu.com"; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = "优惠无限:"; msg.description = "注册优鲜派会员即送30元无门槛红包,下单后,您的好友【葛盼江】再得20元红包"; //这里替换一张自己工程里的图片资源 Bitmap thumb = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.share_logo); 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; Constant.wxApi.sendReq(req); }
3.3 在应用程序包名下新建包及相应java类, 名称必须如图中所示
分享结果回调
@Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_AUTH_DENIED: case BaseResp.ErrCode.ERR_USER_CANCEL: if (RETURN_MSG_TYPE_SHARE == resp.getType()) { showToast("分享失败"); } else if(RETURN_MSG_TYPE_LOGIN == resp.getType()) { showToast("微信自动登录失败"); } finish(); break; case BaseResp.ErrCode.ERR_OK: switch (resp.getType()) { case RETURN_MSG_TYPE_LOGIN: break; case RETURN_MSG_TYPE_SHARE: showToast("微信分享成功"); finish(); break; } break; } }
3.4 添加.wxapi.WXEntryActivity描述信息
<application android:allowBackup="true" android:icon="@drawable/desk" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".activity.MainActivity" android:screenOrientation="portrait" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".wxapi.WXEntryActivity" android:screenOrientation="portrait" android:exported="true"/> </application>
3.5 微信jar包