【发布时间】:2018-06-16 01:32:10
【问题描述】:
我正在使用以下代码在 facebook、twitter、google+ 和其他社交应用程序上分享图像。图片是从设备的外部存储上传的。但是当我显示选择器时,会有多个 facebook 和 twitter 图标。如何限制只显示一个图标?下面是代码。
public void customShare() {
if (file.exists()) {
Uri uri = Uri.fromFile(file);
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, uri);
List<ResolveInfo> resInfo = this.getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : resInfo) {
String packageName = resolveInfo.activityInfo.packageName;
Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
targetedShareIntent.setType("image/jpeg");
targetedShareIntent.putExtra(Intent.EXTRA_STREAM, uri);
targetedShareIntent.setPackage(packageName);
if (packageName.equals("com.facebook.katana") || packageName.equals("ru.ok.android") ||
packageName.equals("com.vkontakte.android") || packageName.equals("com.twitter.android")||
packageName.equals("com.whatsapp") || packageName.equals("org.telegram.messenger") ||
packageName.equals("com.google.android.apps.plus")) {
targetedShareIntents.add(targetedShareIntent);
}
}
Intent chooserIntent = Intent.createChooser(
targetedShareIntents.remove(0), "");
chooserIntent.putExtra(
Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
startActivity(chooserIntent);
}
}
【问题讨论】: