1. 程式人生 > >android通過友盟進行微信分享的坑

android通過友盟進行微信分享的坑

剛好專案中遇到了需要通過第三方微信分享,需要用過友盟的平臺(因為之前用的事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()方法,就閃退了,不要意外,那說明是你的簽名有問題。值得一提的是,我之前簽名驗證都沒有問題,但是一直走不通,原來是微信開發者平臺包名之前改了,需要去重新驗證。切記啊!!