【问题标题】:Android: How to get the right application name?Android:如何获得正确的应用程序名称?
【发布时间】:2016-12-19 21:16:44
【问题描述】:

目前我已经编写了一个代码来加载所有能够从手机查看图像的应用程序。

public static List<String> getAllCapableForFileViewing (Context context, String mimeType) {
    List<String> packages = new ArrayList<>();
    PackageManager pm = context.getPackageManager();
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_VIEW);
    sendIntent.setType(mimeType);
    List<ResolveInfo> resolveInfoList = context.getPackageManager()
            .queryIntentActivities(sendIntent, 0);

    for (ResolveInfo resolveInfo : resolveInfoList) {
        packages.add(resolveInfo.activityInfo.packageName);

        System.out.println(resolveInfo.activityInfo.packageName);
        System.out.println(resolveInfo.activityInfo.applicationInfo.className);
        System.out.println(resolveInfo.activityInfo.name);
        System.out.println("");
    }

    return packages;
}

当我尝试列出所有应用程序时,其中一个列出了两个集合,例如微信,微信朋友圈。显然,它有两个活动可以处理图像以供查看。问题是两者的名字是同一个“微信”。

另外?即使它可以消耗我传入的内容,但它们并不是真正用于查看图像的应用程序,例如图库应用程序。有没有办法识别它们。我知道这可能是不可能的。

【问题讨论】:

    标签: android android-activity package launch


    【解决方案1】:

    问题是两者的名字是同一个“微信”。

    最终,这取决于该应用的开发者。但是,请查看ResolveInfo 中的labelRes,因为这可能是一个更好的标签(例如,从&lt;intent-filter&gt; 中提取)。

    有没有办法识别它们

    欢迎您尝试using CATEGORY_APP_GALLERY,尽管这可能会导致误报(即,用户希望出现的应用程序没有出现)。

    【讨论】:

    • loadLabel方法和labelRes有什么区别
    • @LittleFunny:如果你的意思是this loadLabel(),那应该在ResolveInfo 中使用labelRes。但是,loadLabel() on ResolveInfo 可能会比 loadLabel() on ActivityInfoApplicationInfo 提供更集中的结果。
    • 是的,我已经在 ResolveInfo 中测试了 loadLabel,它返回的结果与 labelRes 相同。最后一个问题,ResolveInfo 与 ActivityInfo 和 ApplicationInfo 是什么关系。 ActivityInfo = 活动级别和 ApplicationInfo = 应用程序级别。
    • @LittleFunny: ResolveInfo 是特定 Intent 分辨率的结果(例如,queryIntentActivities())。因此,例如,ResolveInfo 上的 labelRes 可能会从 &lt;intent-filter&gt; 中提取,如果有问题的活动在那里设置了一个单独的标签而不是活动本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2017-04-24
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多