Android 获取非 Play Store 应用列表

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

作为一项安全措施,我想获取未从 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 和 Samsung 应用程序也从中受益匪浅。无论如何要将它们从列表中删除?我只希望用户安装来自未知来源的应用程序。

最佳答案

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

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

关于Android 获取非 Play Store 应用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225681/

相关文章:

android - 如何通过触摸按钮在android中添加网站链接

android - 可移植转换后: This item is not compatible with your device

android - ApplicationInfo 和 PackageInfo 的区别?

android - Intellij IDEA 不从 gradle 导入依赖,不标记 src 目录

Android - 压缩图像的位图数组

android - Facebook callbackManager 方法 onActivityResult 未在 Fragment onActivityResult 方法中调用

android - T-Mobile Galaxy S 2 在市场上看不到我的应用程序

Android - 如何发送崩溃报告?

Android 获取所有已安装应用的列表

java - 如何使用 ActivityManager 和 PackageManager 在 ListView 中显示正在运行的应用程序图标?