1

我正在我的应用程序中处理系统应用程序。我已经在我的应用程序中生成了 Android 设备中所有已安装应用程序的完整列表。现在我的任务是从该应用程序列表中识别系统应用程序。或者确定当前的前台应用程序是系统应用程序还是安装的应用程序?

当前使用以下代码:

PackageManager packageManager = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = packageManager.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(packageManager));

List<PackageInfo> packs = packageManager.getInstalledPackages(0); //PackageManager.GET_META_DATA
for(int i=0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
ApplicationInfo a = p.applicationInfo;
if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1))
{
continue;
}

apps.add(p.packageName);
4

1 回答 1

0

下面的代码不同的系统应用程序和安装的应用程序。

List<ApplicationInfo> installedApps = getPackageManager().getInstalledApplications(0);
    for (int i = 0; i < installedApps.size(); i++) {
        if(installedApps.get(i).sourceDir.startsWith("/data/app/")){
        //Non System Apps
        }else{
        //system Apps
        }}
于 2017-11-22T10:19:42.490 回答