ShareSdk中分享失败时,根据不同的平台,提示不同的失败信息

项目中有需求让根据不同的分享平台提示不同的信息,下面就给大家分享一下。

  首先我们需要实现PlatformActionListener这个类(这是ShareSdk中的),然后重写onError方法,因为分享失败就会走onError方法,在这个方法里面可以拿到platform这个类,通过这个类可以获取到平台的名字,然后通过msg可以发送消息,并在handler判断是否失败,失败后是哪个平台,并提示不同的信息,下面上代码。

1、在你的类中实现PlatformActionListener这个类

package cn.sharesdk.framework;

import cn.sharesdk.framework.Platform;
import java.util.HashMap;

public interface PlatformActionListener {
    void onComplete(Platform var1, int var2, HashMap<String, Object> var3);

    void onError(Platform var1, int var2, Throwable var3);

    void onCancel(Platform var1, int var2);
}


2、在你的类中重写onError方法,shareFailName就是获取到的平台的名字

@Override
public void onError(Platform platform, int action, Throwable t) {
    // 打印错误信息,print the error msg
    t.printStackTrace();
    // 错误监听,handle the error msg
    Message msg = new Message();
    msg.what = MSG_ACTION_CCALLBACK;
    msg.arg1 = 2;
    msg.arg2 = action;
    shareFailName = platform.getName();
    msg.obj = t;
    UIHandler.sendMessage(msg, this);
}

3、在handlMessage这个方法中进行判断(这个方法,是实现了Handler.CallBack这个回调,我是在基类中实现的,所以直接重写即可),蓝色加粗的地方就是判断是哪个平台。

@Override
public boolean handleMessage(Message msg) {
    switch (msg.what) {
        case MSG_TOAST: {
            String text = String.valueOf(msg.obj);
            Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
        }
        break;
        case MSG_ACTION_CCALLBACK: {
            switch (msg.arg1) {
                case 1: // 成功提示, successful notification
                    ToastManager.showShortToast("分享成功");
                    break;
                case 2: // 失败提示, fail notification
                    if(Wechat.NAME.equals(sharaFailName) || WechatMoments.NAME.equals(shareFailName)){
                        ToastManager.showShortToast("手机中未安装微信");
                    }else{
                        ToastManager.showShortToast("分享失败");
                    }
                    break;
                case 3: // 取消提示, cancel notification
                    ToastManager.showShortToast("取消分享");
                    break;
            }
        }
        break;
        case MSG_CANCEL_NOTIFY: {
            NotificationManager nm = (NotificationManager) msg.obj;
            if (nm != null) {
                nm.cancel(msg.arg1);
            }
        }
        break;
    }
    return false;
}

运行后,就可以看到不同平台,失败后不同的提示信息了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值