Как определить активность переднего плана является системной активностью или установленным приложением в Android?

Я работаю над обработкой системных приложений в моем приложении. Я создал полный список всех установленных приложений на устройстве Android в моем приложении. Теперь моя задача - определить приложения SYSTEM из этого списка приложений. Или определить, что приложение CURRENT FOREGROUND является системным приложением или установленным приложением?

Используя код ниже в настоящее время:

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

1 ответ

Приведенный ниже код отличается от системных приложений и установленных приложений.

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
        }}
Другие вопросы по тегам