【问题标题】:Where does Android store all packages info including app label?Android在哪里存储包括应用标签在内的所有包信息?
【发布时间】:2015-07-10 20:12:40
【问题描述】:

/data/system/ 下有 packages.list,其中列出了所有已安装的软件包及其 <PKG_NAME><USER_ID><DATA_DIR>。但它没有我特别想要的,应用程序的标签。例如。 “Airdroid”是标题或通用名称,而com.sand.airdroid<PKG_NAME>

我也知道有很多关于它的问题,我见过他们,但他们都这样做:

  1. 使用编程调用一些函数,
  2. 使用aapt 之类的工具解析Androidmanifest.xml,这需要首先转储.apk
  3. 他们中的一些人建议使用市场上的应用来完成这项工作。

但是,

  • 我不会去 Android 编程,因为我不知道,
  • 两者都不能在 PC 上使用需要转储 apk 的工具,因为我需要所有应用程序的名称列表,而且对于设备速度较慢的任何人来说,转储所有 apk 都不是很现实或不舒服,
  • 无法安装应用,因为我不拥有该设备,因此我无权安装或删除任何应用

但如果用户可以通过编程获得这些名称,那么我相信,必须有一个集中式源或至少有一些文件具有所需的信息。否则,很难理解“设置 -> 应用程序”会在用户每次打开该 GUI 时解析所有这些 apk。

  • 我查看了/data/data/com.android.packageinstaller,但什么也没找到,
  • 我在 Logcat 的输出中看到我的启动器从“设置缓存”中检索这些名称(至少我理解它是这样做的),但我不知道下一步该做什么,而且这也不是通用方法。
  • 我尝试分析与“包安装程序”、“包管理器”(source) 和pm 相关的源代码,但找不到线索。

那么,我在哪里可以找到 Android 中所需的信息?

注意:我可以使用 ADB,我对命令很熟悉,并且设备(Android 4.x、5.x)已获得 root 权限,但非常感谢非 root 方法。

谢谢!

【问题讨论】:

    标签: android package


    【解决方案1】:

    我认为 ApplicationInfo.loadDescription() 会返回应用标签:

    http://developer.android.com/reference/android/content/pm/ApplicationInfo.html#loadDescription(android.content.pm.PackageManager)

    Android 编程是正确的方法,因此您不必害怕学习。

    另外,您正在寻找的这个文件可能是一个系统文件,因此您需要 root 设备才能读取它,如果它不是您的设备,我怀疑您可以这样做。

    【讨论】:

    • 感谢您的努力,但正如我所说:“我不能从事 Android 编程,因为我不知道”。我尝试阅读pm.java 源代码,但什么也想不通。只要不是 Android 编程,我随时准备接受命令或在 Android 中进行挖掘。
    猜你喜欢
    • 2013-10-04
    • 2016-12-11
    • 2015-05-03
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多