1. 程式人生 > >android整合sharesdk遇到的坑無法返回app等

android整合sharesdk遇到的坑無法返回app等

整合sharesdk後    遇到一個問題  分享到微信和朋友圈  點選返回的時候發現無法回到app

    private void sharedToThirdPlatform() {
        OnekeyShare oks = new OnekeyShare();
        //關閉sso授權
        oks.disableSSOWhenAuthorize();
        // title標題,微信、QQ和QQ空間等平臺使用
        oks.setTitle("我的標題");
        // titleUrl QQ和QQ空間跳轉連結
        oks.setTitleUrl("http://sharesdk.cn");
        // text是分享文字,所有平臺都需要這個欄位
        oks.setText("震驚,sharesdk竟然。。。");
        // imagePath是圖片的網路路徑  不設定沒有縮圖
        oks.setImageUrl("http://img.mp.sohu.com/upload/20170614/1b236c0dfb2d4d098e08b9b94db043aa.png");
        // imagePath是圖片的本地路徑,Linked-In以外的平臺都支援此引數
//            oks.setImagePath("https://pic3.zhimg.com/80/7d6e12985dfdb526e902443a7dc9abfe_hd.jpg");
        // url在微信、微博,Facebook等平臺中使用   跳轉地址
        oks.setUrl("http://img.mp.sohu.com/upload/20170614/1b236c0dfb2d4d098e08b9b94db043aa.png");
        // comment是我對這條分享的評論,僅在人人網使用
        oks.setComment("我是測試評論文字");

        oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
            @Override
            public void onShare(Platform platform, Platform.ShareParams shareParams) {
                if (Wechat.NAME.equals(platform.getName())) {
                    
                }
            }
        });
        // 啟動分享GUI
        oks.show(this);
    }

後來按網上的方法將  WXEntryActivity的啟動模式設定為android:launchMode="singleTask"就可以了

        <!--微信分享回撥 -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" />

但是雖然能返回app了 又遇到另外一個問題    app無法操作  表面覆蓋了一層介面 需要點選物理返回鍵一次才能操作

用sharesdk的回撥方法都沒有執行  我猜測這一層介面是WXEntryActivity,因為微信開發文件裡面就是在這個Activity執行的,我想最終還是會走這個類的方法  然後就嘗試在WXEntryActivity的回撥方法裡面列印   最後發現確實如此   分享成功後點擊返回app     baseResp.getType=2

然後就是解決問題了 

    @Override
    public void onResp(BaseResp baseResp) {
       switch (baseResp.getType()){
           case 2:          //微信分享成功返回app的回撥
               finish();

               break;
       }
    }

 判斷type  如果==2,則說明分享成功    此時finish掉透明的WXEntryActivity介面  然後app就可以操作了

另外  附上app下build.gradle檔案裡面的配置

apply plugin: 'com.mob.sdk'

MobSDK {
    appKey "xxxxxxx"          //自己註冊生成的
    appSecret "xxxxxxxxxx"    //自己註冊生成的

    ShareSDK {
        devInfo {     
            WechatMoments {                  //朋友圈
                appKey "去微信開放平臺申請"
                appSecret "去微信開放平臺申請"
                callbackUri "http://www.sharesdk.cn"
                shareByAppClient true
                bypassApproval="false"
            }

            Wechat {                        //微信
                appId "去微信開放平臺申請"
                appSecret "去微信開放平臺申請"
                userName "gh_afb25ac019c9"
                path "pages/index/index.html?id=1"
                withShareTicket true
                shareByAppClient true    
                miniprogramType 2
                bypassApproval false   
            }

        }
    }
}