Android之微信分享
现在的项目中要用到微信分享,弄了两天才弄好,开始的时候是下载微信的sdk和demo,将demo放到eclipse上跑起来后发现不能分享,都是一闪就结束程序了,后来发现我们要将demo中的APPID和报名替换成我们自己申请应用时的包名和APPID,之后就可以实现分享功能了。
1.注册微信的移动应用
微信注册地址: 点击打开链接
点击图中的创建移动应用,在接下来的第二页中如下:
在应用签名和应用包名这两输入框要根据自己的实际填写,千万别瞎填。
应用签名:我们一般开发程序是用的都是debug.keystore,但是在我们打包程序发布的时候用的是我们正式的XXX.keystore或者是XXX.jks,eclipse用的是.keystore,as用的是.jks
1.在微信开发里有一个资源下载,从哪可以下载一个应用签名获取APK,将他下载到手机,同时将我们的程序安装到手机中,使用这个APK就可以获取到签名,但是一般这个签 名是debug的,不可以正式打包发布时使用,正式打包时,可以用我们自己的keystore获取签名。
2.包名可以从manafest.xml文件中获取;
2.代码简单分析
1.文字分享:
public void shareText2WX(String str, int flag) { WXTextObject textObject = new WXTextObject(); textObject.text = str; WXMediaMessage wxMediaMessage = new WXMediaMessage(); wxMediaMessage.mediaObject = textObject; wxMediaMessage.description = str; SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("text"); req.message = wxMediaMessage; switch (flag) { case 1: req.scene = SendMessageToWX.Req.WXSceneSession; // 好友 break; case 2: req.scene = SendMessageToWX.Req.WXSceneTimeline; // 朋友圈 break; } iwxapi.sendReq(req); }
这段代码是从微信分享demo中直接拿出来用的,他只是文字分享,其他的如:网页分享,图片分享,音乐分享,视频分享,和上边相同,直接拿出来,稍微改改就可以了。
2.分享回调
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, Constances.WX_APPKEY, false); api.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq arg0) { } @Override public void onResp(BaseResp resp) { int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = R.string.errcode_success; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = R.string.errcode_cancel; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = R.string.errcode_deny; break; default: result = R.string.errcode_unknown; break; } Toast.makeText(WXEntryActivity.this, result, Toast.LENGTH_LONG).show(); // TODO 微信分享 成功之后调用接口 this.finish(); } }在我们的包里边,建一个包名为wxapi的包,在这个包里边建一个WXEntryActivity的类继承activity,实现IWXAPIEventHandler接口,
在manafest.xml里注册Activity:
<activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent" />