新浪微博分享以及回调可能会遇到的一些问题

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;如下
weiboApi = WeiboShareSDK.createWeiboAPI(this, Constants.WEIBO_ID);
weiboApi.registerApp();
4.然后跟据其demon上分享实例一步步来,然后在用到分享的activity中调用回调方法对分享的状态进行处理,如下:

@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了解的不够透彻。当然了,不论是单处还是多处用到微博分享都可以采用这种方式。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值