-1

需要一些帮助,我能够以编程方式从 Android 设备检索 *.apk 文件名。任何机构都可以提供仅获取用户下载的 apk 文件。请帮忙

4

1 回答 1

1

任何机构都可以提供仅获取用户下载的 apk 文件。请帮忙

所以我认为没有简单的解决方案。但谁知道:

  • 每个 .apk 文件的名称都采用一种形式<packageName>[some optional text].apk

因此,我现在想到的解决方案是您需要遍历已安装的应用程序(ApplicationInfo),然后使用当前 .apk 文件的名称测试每个包:

if (file.getName().contains(packageInfo.packageName)) {
   // its User downloaded .apk file
}

要仅过滤非系统应用程序(包),您可以使用以下条件:

if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
   // non-system application
}

所以最后它看起来像(伪代码):

for (File f: apkFiles) {

   String name = f.getName();

   for (ApplicationInfo info: packageManager.getInstalledApplications(PackageManager.GET_META_DATA) {

      if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {

          if (name.contains(info.packageName)) {
             // it's User downloaded .apk file

             break;
          } 

      }
   }
}

笔记:

但是如果下载的 .apk 文件没有安装,就会出现问题。我认为,如果您想区分 .apk 文件(用户下载和未下载),我认为只有一种解决方案(不可靠)是获取文件的创建时间以及日期在安装操作系统日期之后的所有文件应该是用户下载。

于 2013-10-31T08:03:02.160 回答