您的位置:首页 > 其它

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

2015-12-02 10:48 453 查看
项目中有需求让根据不同的分享平台提示不同的信息,下面就给大家分享一下。

  首先我们需要实现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;
}


运行后,就可以看到不同平台,失败后不同的提示信息了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: