Как определить активность переднего плана является системной активностью или установленным приложением в 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
}}