【问题标题】:Android get list of non Play Store appsAndroid 获取非 Play 商店应用列表
【发布时间】:2017-02-14 12:02:23
【问题描述】:

作为一项安全措施,我想获取未从 Play 商店安装的应用列表。有没有办法做到这一点?

packageManager 包含一个方法getInstalledApplications,但我不知道要添加哪些标志来获取列表。任何帮助将不胜感激。

编辑:这是 v4_adi 答案的代码示例。

public static List<String> getAppsFromUnknownSources(Context context)
{
  List<String> apps = new ArrayList<>();
  PackageManager packageManager = context.getPackageManager();
  List<PackageInfo> packList = packageManager.getInstalledPackages(0);
  for (int i = 0; i < packList.size(); i++)
  {
     PackageInfo packInfo = packList.get(i);
     if (packageManager.getInstallerPackageName(packInfo.packageName) == null)
     {
        apps.add(packInfo.packageName);
     }
  }

  return apps;
}

这是一个良好的开端,但是这也为预装的 Android 和三星应用带来了很多回报。无论如何要从列表中删除它们吗?我只希望用户安装来自未知来源的应用程序。

【问题讨论】:

  • 如果问题得到解决。将解决您的问题的答案标记为已接受。

标签: android google-play android-package-managers installed-applications


【解决方案1】:

以下链接已回答您的问题 PackageManager 类提供 getInstallerPackageName 方法,该方法将告诉您安装您指定的包的任何包的名称。侧载应用不会包含值。

How to know an application is installed from google play or side-load?

【讨论】:

    【解决方案2】:

    最初我认为检索未通过 Google Play 商店安装的应用程序就足够了。后来发现还需要过滤掉预装的系统应用。 我在另一篇文章中找到了拼图的最后一部分:Get list of Non System Applications

    public static List<String> getAppsFromUnknownSources(Context context)
    {
      List<String> apps = new ArrayList<>();
      PackageManager packageManager = context.getPackageManager();
      List<PackageInfo> packList = packageManager.getInstalledPackages(0);
      for (int i = 0; i < packList.size(); i++)
      {
         PackageInfo packInfo = packList.get(i);
         boolean hasEmptyInstallerPackageName = packageManager
               .getInstallerPackageName(packageInfo.packageName) == null;
         boolean isUserInstalledApp = (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0;
    
         if (hasEmptyInstallerPackageName && isUserInstalledApp)
         {
            apps.add(packInfo.packageName);
         }
      }
    
      return apps;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多