本实例项目运行条件:
开发环境: 【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包

下载Demo