我想列出已安装和系统应用程序。系统应用程序是指预安装的应用程序(在制造时安装的应用程序)。
为此,我使用(ApplicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0
对所有应用进行了分类 - 这些是系统应用,其他应用是已安装的应用。
现在我的问题是我想点击列表项目启动这些应用程序。但我无法启动联系人,拨号器等系统应用程序......
如何以编程方式启动系统应用程序或如何过滤掉可启动的系统应用程序?
答案 0 :(得分:4)
我找不到确切的答案。但我认为这会有帮助
List<PackageInfo> list = packageManager.getInstalledPackages(0);
for (PackageInfo pi : list) {
try {
ApplicationInfo appInfo = getPackageManager() .getApplicationInfo(pi.packageName, 0);
//check whether the app is launchable or not
if (packageManager .getLaunchIntentForPackage(appInfo.packageName) != null) {
//check whether the app is an installed / system app
if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
//system apps.........
} else {
//installed apps............
}
}
} catch (Exception e) {}
}