使用this answer中的代码,我构建了一个图像共享意图选择器,它应该只显示一组特定的应用程序(Instagram,Twitter,Facebook等等)。
效果很好,但显示应用程序的显示名称。
使用此代码:
public static void startImageSharingIntent(Activity caller, List<String> possiblePackagesNames, Uri imgUri) {
try {
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent intentTemplate = new Intent(Intent.ACTION_SEND);
intentTemplate.setType("image/*");
List<ResolveInfo> resInfo = caller.getPackageManager().queryIntentActivities(intentTemplate, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
if (possiblePackagesNames.contains(info.activityInfo.packageName.toLowerCase())) {
Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND);
targetedShare.setType("image/*");
targetedShare.putExtra(Intent.EXTRA_STREAM, imgUri);
targetedShare.setPackage(info.activityInfo.packageName);
//adding bottom line puts the app name in the intent
targetedShare.setClassName(info.activityInfo.packageName, info.activityInfo.name);
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
caller.startActivity(chooserIntent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
如果我对行targetedShare.setClassName(info.activityInfo.packageName, info.activityInfo.name);
发表评论,那就是结果选择器:
取消注释显示:
在第一个显示&#34; Android系统&#34;选项,这是错误的;但在第二个中,Twitter的不同行为的标签仅重命名为Twitter。
有没有办法避免使用&#34; Android系统&#34;选项但不覆盖默认意图名称?