android通過友盟進行微信分享的坑
阿新 • • 發佈:2019-01-10
剛好專案中遇到了需要通過第三方微信分享,需要用過友盟的平臺(因為之前用的事ShareSDK),去看了一下官方文件,順便記錄一下問題和一些分享的細節。
1,新增一些jar包(只需要去官方下載,沒有什麼大問題),因為我們公司只需要微信分享,朋友圈和qq空間,所以我下載的都是精簡版的
2,需要建一個回撥的類,記得要繼承
WXCallbackActivity,其中一定要注意
com.XXXX.weixin.callback.WXCallbackActivity;匯入的包要正確
3,準備工作做完上程式碼
點選事件之後:new ShareAction(InformationDetailedActivity.this) .withText("hello22") //文字 .setPlatform(SHARE_MEDIA.WEIXIN)//分享平臺 .setCallback(shareListener) .share();
監聽事件:
private UMShareListener shareListener = new UMShareListener() { /** * @descrption 分享開始的回撥 * @param platform 平臺型別 */ @Override public void onStart(SHARE_MEDIA platform) { Log.i("TAG", "onStart: " + "KAISHI LE "); SocializeUtils.safeShowDialog(dialog); } /** * @descrption 分享成功的回撥 * @param platform 平臺型別 */ @Override public void onResult(SHARE_MEDIA platform) { Toast.makeText(InformationDetailedActivity.this, "成功了", Toast.LENGTH_LONG).show(); SocializeUtils.safeCloseDialog(dialog); } /** * @descrption 分享失敗的回撥 * @param platform 平臺型別 * @param t 錯誤原因 */ @Override public void onError(SHARE_MEDIA platform, Throwable t) { SocializeUtils.safeCloseDialog(dialog); Toast.makeText(InformationDetailedActivity.this, "失敗" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @descrption 分享取消的回撥 * @param platform 平臺型別 */ @Override public void onCancel(SHARE_MEDIA platform) { SocializeUtils.safeCloseDialog(dialog); Toast.makeText(InformationDetailedActivity.this, "取消了", Toast.LENGTH_LONG).show(); } };
要注意了:添加回調事件
//返回值 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
4,我之前是一直遇到簽名有問題,用這個來debug來驗證,要在Mainfest中的application 的name中新增哦
public class APP extends Application { @Override public void onCreate() { super.onCreate(); Config.DEBUG = true;//是否開啟 QueuedWork.isUseThreadPool = false; UMShareAPI.get(this); } //各個平臺的配置,建議放在全域性Application或者程式入口 { PlatformConfig.setWeixin("KEY", "簽名"); //微信 appid appsecret PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");// QQ和Qzone appid appkey PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com"); //新浪微博 appkey appsecret } }
最後的最後:最值得注意是,如果你的程式碼沒有錯,但是回撥的方法只執行了onStart()方法,就閃退了,不要意外,那說明是你的簽名有問題。值得一提的是,我之前簽名驗證都沒有問題,但是一直走不通,原來是微信開發者平臺包名之前改了,需要去重新驗證。切記啊!!