Android获取非Play商店应用的列表 [英] Android get list of non Play Store apps

查看:244
本文介绍了Android获取非Play商店应用的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为安全措施,我希望获得未从Play商店安装的应用程序列表。有没有办法做到这一点?
$ b

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



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

  public static List< String> getAppsFromUnknownSources(上下文上下文)
{
List< String> apps = new ArrayList<>();
PackageManager packageManager = context.getPackageManager();
列表< 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);
}
}

返回应用;
}

这是一个很好的开始,但是这也会预先安装很多Android和三星应用程序。无论如何将它们从列表中删除?我只想要用户安装来自未知来源的应用程序。

解决方案

原本我认为这足以检索那些不是通过Google Play商店安装。后来我发现我也需要过滤掉预先安装的系统应用程序。
我在另一篇文章中发现了难题的最后部分:获取Non系统应用程序

  public static List< String> getAppsFromUnknownSources(上下文上下文)
{
List< String> apps = new ArrayList<>();
PackageManager packageManager = context.getPackageManager();
列表< PackageInfo> packList = packageManager.getInstalledPackages(0);
for(int i = 0; i< packList.size(); i ++)
{
PackageInfo packInfo = packList.get(i);
boolean hasEmptyInstallerPackageName = packageManager $ b $ .getInstallerPackageName(packageInfo.packageName)== null;
boolean isUserInstalledApp =(packageInfo.applicationInfo.flags& ApplicationInfo.FLAG_SYSTEM)== 0;

if(hasEmptyInstallerPackageName&& isUserInstalledApp)
{
apps.add(packInfo.packageName);
}
}

返回应用;
}


As a safety measure I would like to get the list of apps that aren't installed from the Play Store. Is there a way to do this?

The packageManager contains a method getInstalledApplications but I don't know which flags to add to get the list. Any help would be appreciated.

Edit: Here is an code example of v4_adi's answer.

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;
}

This is a good start, however this also returns a lot off pre-installed Android and Samsung apps. Is there anyway to remove them from the list? I only want user installed apps from unknown sources.

解决方案

Originally I thought it would be enough to retrieve the apps that weren't installed via the Google Play Store. Later I found that I also needed to filter out the pre-installed system applications. I found the last part of the puzzle in another post: 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;
}

这篇关于Android获取非Play商店应用的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆