在做分享功能时想删除一些九宫格上的图标,条件反射的去翻源码,结果好了,一顿操作找到PlatformPage下:
protected ArrayList<Object> collectCells() {
ArrayList<Object> cells = new ArrayList<Object>();
Platform[] platforms = ShareSDK.getPlatformList();
if (platforms == null) {
platforms = new Platform[0];
}
HashMap<String, String> hides = getHiddenPlatforms();
if (hides == null) {
hides = new HashMap<String, String>();
}
for (Platform p : platforms) {
if (!hides.containsKey(p.getName())) {
cells.add(p);
}
}
ArrayList<CustomerLogo> customers = getCustomerLogos();
if (customers != null && customers.size() > 0) {
cells.addAll(customers);
}
return cells;
}
Platform[] platforms = ShareSDK.getPlatformList();看起来不错,点进去一看<pre name="code" class="java">public static synchronized Platform[] getPlatformList() {
b();
return a.a();
}
恩,没错,这就是一个class文件里面的方法,无法去修改,这显然让人很沮丧,回头过来一看,
HashMap<String, String> hides = getHiddenPlatforms();
hides映入眼帘,一顿操作之后终于:
<pre name="code" class="java"> ShareSDK.initSDK(this);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
oks.addHiddenPlatform(TencentWeibo.NAME);
oks.addHiddenPlatform(WechatFavorite.NAME);
oks.addHiddenPlatform(Facebook.NAME);
oks.addHiddenPlatform(Twitter.NAME);
oks.addHiddenPlatform(Renren.NAME);
oks.addHiddenPlatform(AlipayMoments.NAME);
oks.addHiddenPlatform(Alipay.NAME);
当然,这只是隐藏掉,说到这不得不说下排序的问题了,进入res文件夹下,shareSDK.xml文件,每个第三方的列表都有一个sortId,改变sortId即可。