我试图提取在Android上运行的应用程序列表。如果我不过滤我会获得很多服务和长包名称。
List<String> appList = new ArrayList<>();
final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
if(true){
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
Log.d(TAG, "Name: "+pm.getApplicationLabel(packageInfo));
appList.add(pm.getApplicationLabel(packageInfo).toString());
}
}
但是,如果我为系统添加过滤器,它会移除基本应用程序,如电话,消息,相机等。
for (ApplicationInfo packageInfo : packages) {
if((packageInfo.flags & packageInfo.FLAG_SYSTEM )!=1){
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
Log.d(TAG, "Name: "+pm.getApplicationLabel(packageInfo));
appList.add(pm.getApplicationLabel(packageInfo).toString());
}
}
如何获取所有已安装的应用程序以及系统应用程序的列表?
我正在使用android studio 2.3.1并使用以下的graddle配置:
minSdkVersion 23
targetSdkVersion 25