最近在做android端分享的功能,在微信开放平台查看了下官网上的开发文档,一步一步的按文档上的步骤来:
1、申请你的AppID
2、下载开发工具包
3、搭建开发环境,引入libammsdk.jar文件
4、写发送请求代码(注意:在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类)
一切都挺顺利的,调试了也能正常发送分享。但是当发布后再安装到手机上,点击分享的时候就没有任何反应,也没提示。
最后在网上查到说应用包名、签名、APP_ID要对应,想想问题应该出现在签名上,就安装了发布后的apk,再用genSignature.apk获取了一下签名,
发现和原来的不一样。于是用这个签名又去官网登记了一个应用,获取新的appid,appkey。发布的时候使用刚登记的appid,安装后微信分享没问题了,
大功告成。
所以做微信分享的时候要申请两个应用,一个用做开发,一个用在发布正式上。
分享一下代码(替换自己的appid)
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LogUtil.d("微信", "微信响应页面", true); api = WXAPIFactory.createWXAPI(this, AppID, false); api.registerApp(AppID); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } public void onReq(BaseReq arg0) { LogUtil.d("微信", "BaseReq:" + arg0.getType(), true); switch (arg0.getType()) { case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX: LogUtil.d("", "ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX", true); break; case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: LogUtil.d("", "ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX", true); break; default: break; } finish(); } public void onResp(BaseResp arg0) { LogUtil.d("微信", "BaseResp:" + arg0.errCode, true); String result = ""; switch (arg0.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 = "errcode_unknown"; break; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); finish(); } }
分享方法
IWXAPI wxApi = WXAPIFactory.createWXAPI(this, AppID); wxApi.registerApp(AppID);
public void WxSendRequest(int towhere, String sharestr) { LogUtil.e("", "博饼微信分享", true); WXTextObject txtObject = new WXTextObject(); txtObject.text = sharestr; WXMediaMessage msg = new WXMediaMessage(txtObject); msg.title = mBoCake.getTitle(); msg.description = mBoCake.getTitle(); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = String.valueOf(System.currentTimeMillis()); req.message = msg; if (towhere == 0) { req.scene = SendMessageToWX.Req.WXSceneSession;//分享给好友 } else { req.scene = SendMessageToWX.Req.WXSceneTimeline;//朋友圈 } wxApi.sendReq(req); }