新浪微博分享以及回撥可能會遇到的一些問題
阿新 • • 發佈:2018-12-22
1.老老實實的去新浪微博的開放平臺去下sdk
2.把sdk加到你專案中的lib中,然後再清單檔案中你需要用到分享的activity中加上這幾行程式碼
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
3.然後再你自己專案中的application中初始化api;如下4.然後跟據其demon上分享例項一步步來,然後在用到分享的activity中呼叫回撥方法對分享的狀態進行處理,如下:weiboApi = WeiboShareSDK.createWeiboAPI(this, Constants.WEIBO_ID); weiboApi.registerApp();
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
((MyApplication)getApplication()).weiboApi.handleWeiboResponse(intent, this);
}
這個this指的是IWeiboHandler.Response,而且需要注意的是這個不接受內部類,不然會回撥不成功。所以在activity中實現這個介面並處理回撥的狀態即可。
這一切看似都是那麼完美。然而當你多個地方用到新浪分享的時候就會遇到蒙逼的事了。。
現在就讓我來給大家分析下多個地方用到新浪分享時遇到的問題並解決它。
按照之前的思路如果多個地方用到則需要在manifests中的多個activity中用到上述中的intent-filter,那麼問題就來了,分享成功或取消後,由於多個activity中都有一樣的intent-filter,所以它矇蔽了,不知道該返回到哪個acitivity,才會出現一個提示讓你選擇一種預設的開啟方式。真是有點操蛋。我試過把用到分享的每個activity中的category用不一樣的,這個選擇預設方式就再沒出現過,but回撥方法不起作用了。。,
想了好久,當我同事跟我說,為什麼不讓它分享成功或失敗後跳到特定的activity中呢,真是一言驚醒夢中人,我瞬間就想到了微信的回撥activity。
於是我也寫了一個回撥的activity,如下:
public class SinaEntryActivity extends BaseActivity implements IWeiboHandler.Response{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MyApplication)getApplication()).weiboApi.handleWeiboResponse(getIntent(), this);
}
@Override
public void onResponse(BaseResponse baseResponse) {
if(baseResponse!= null){
switch (baseResponse.errCode) {
case WBConstants.ErrorCode.ERR_OK:
Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();
break;
case WBConstants.ErrorCode.ERR_CANCEL:
Toast.makeText(this, "分享取消", Toast.LENGTH_LONG).show();
break;
case WBConstants.ErrorCode.ERR_FAIL:
Toast.makeText(this,
"分享失敗",
Toast.LENGTH_LONG).show();
break;
}
}
finish();
}
}
然後把manifests中所有用到新浪分享的intent-filter都去掉,然後加到這個回撥activity中,然後回撥跟選擇方式的彈框就完美解決了,說到底還是自己對清單檔案中的action和category瞭解的不夠透徹。當然了,不論是單處還是多處用到微博分享都可以採用這種方式。