与微信好友和时间线共享时,两个标签都显示“微信”

问题描述 投票:2回答:1

我有一个Android应用程序可将消息共享到微信(无sdk)。

当我直接使用StartChooser方法时,显示名称'Send to Moment'和'Send to Chat'会很好地显示。

但是当我要删除应用时,我不需要使用意图过滤器,如下所示,存在一个问题,即显示名称都显示'WeChat'而不是'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将解决此问题。

android android-intent label wechat
1个回答
0
投票

这是我的工作方式。

CharSequence label = info.loadLabel(getPackageManager());
Intent extraIntents = new LabeledIntent(targeted, activityInfo.packageName, label, info.icon);

targetedShareIntents.add(extraIntents);
© www.soinside.com 2019 - 2024. All rights reserved.