关于Android分享过滤某一APP的用法
使用分享应用时的过滤原因
由于分享文本信息给Facebook,分享后为空,查询资料才发现需要对接其SDK来进行分享,真是惯得臭毛病,于是分析后决定取消对于Facebook的分享功能。
在网上查到的方法存在的问题
在CSDN等论坛查询到的方法,都是获取可分享列表然后添加内容,但是有很大的问题,Google表示,在“N”版本之后您可以使用黑名单的方式来代替白名单,于是我去stackoverflow里面找到了如下方法
过滤代码(这里以Facebook为例)
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setTypeAndNormalize("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, shareContent);
Intent chooser = Intent.createChooser(intent, topTitle);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ArrayList<ComponentName> targets = new ArrayList<>();
// remove facebook which has a broken share intent
for (ResolveInfo candidate : mActivity.getPackageManager().queryIntentActivities(intent, 0)) {
String packageName = candidate.activityInfo.packageName;
if (packageName.toLowerCase().contains("facebook")) {
targets.add(new ComponentName(packageName, candidate.activityInfo.name));
}
}
chooser.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, targets.toArray(new ComponentName[0]));
}
mActivity.startActivity(chooser);