项目中有需求让根据不同的分享平台提示不同的信息,下面就给大家分享一下。
首先我们需要实现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; }
运行后,就可以看到不同平台,失败后不同的提示信息了