我有一个 android 应用程序可以将消息分享到微信(没有 sdk)。
当我直接使用 StartChooser 方法时,显示名称“Send to Moment”和“Send to Chat”显示良好。
但是当我想删除我不需要的应用程序时,如下所示,显示名称都显示“微信”而不是“发送到时刻”和“发送到聊天”。但同时,他们的图标是对的!
谁能告诉我如何获得正确的显示标签?谢谢!
Intent it = new Intent(Intent.ACTION_SEND);
it.setType("image/*");
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
if (!resInfo.isEmpty()) {
List<Intent> targetedShareIntents = new ArrayList<Intent>();
for (ResolveInfo info : resInfo)
{
Intent targeted = new Intent(Intent.ACTION_SEND);
targeted.setType("image/*");
ActivityInfo activityInfo = info.activityInfo;
if (activityInfo.packageName.contains("tencent.mm") || etc..)
{
targeted.setClassName(activityInfo.packageName, activityInfo.name);
targeted.setPackage(activityInfo.packageName);
targeted.putExtra(Intent.EXTRA_TEXT, "share text");
targeted.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
targetedShareIntents.add(targeted);
}
}
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);
}
!!!更新 !!!:
如果微信意图放在“Intent.createChooser”中,显示的标签是正确的,但放在“EXTRA_INITIAL_INTENTS”中显示的标签是错误的。
UPDATE2:我在How to make an intent with multiple actions中 找到了答案。使用 LabeledIntent 就可以解决问题了。