获取用户下载apk

时间:2013-10-31 07:40:48

标签: android

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

1 个答案:

答案 0 :(得分: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文件(用户下载而不是),我认为只有一个解决方案(不可靠)是在创建文件时获取的所有文件都是在日期之后安装时操作系统应该是用户下载。