【问题标题】:How to get app name by package name in android?如何在android中通过包名称获取应用程序名称?
【发布时间】:2017-04-24 13:46:58
【问题描述】:

我正在编写一个命令行工具来通过包名获取应用程序名称,并尝试以下方式。

  1. PackageManager在android API中提供功能,但我的工具不是APK,所以没有Context。

  2. 命令 AAPT 可以从 apk 解析应用程序名称,adb shell aapt dump badging /data/app/com.google.android.apps.inbox-1/base.apk,但我的设备没有 aapt,我从 here 下载了一个,它抱怨“错误:仅定位独立的可执行文件(PIE) 受支持”。

有什么帮助吗?

【问题讨论】:

标签: android package apk aapt


【解决方案1】:

要获取应用名称,请尝试此操作。它将提供应用程序清单标签中定义的应用程序名称。

PackageManager packageManager = getApplicationContext().getPackageManager();
    ApplicationInfo applicationInfo ;
    try {
        applicationInfo = packageManager.getApplicationInfo( this.getPackageName(), 0);
    } catch (final NameNotFoundException e) {
        applicationInfo = null;
    }
    String applicationName = (String) (applicationInfo != null ? packageManager.getApplicationLabel(applicationInfo ) : "(unknown)");

【讨论】:

  • 他不能那样做。他不想在他的 android 应用程序中获取应用程序名称。他正在开发一个 cmd 工具,可以从包中检索应用程序的名称。他在他的问题中提到了这一点。
【解决方案2】:

您可以在linux中使用AAPT2命令来获取APK的包名。

./aapt2 dump packagename <path_to_apk>

但是您需要从这里下载更新版本的 AAPT2: Download AAPT from Google Maven

您可以尝试在 shell 脚本中执行此命令,这样您就可以使用包名。

PS:我使用 AAPT2 版本 3.3.0-5013011 来测试上述命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多