android整合sharesdk遇到的坑無法返回app等
阿新 • • 發佈:2018-12-19
整合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
}
}
}
}