我想获取已安装应用程序的列表。但是需要排除默认的内置应用程序。像蓝牙,App库一样。
预先感谢您的帮助
答案 0 :(得分:0)
使用此方法
private void getApps() {
List<ApplicationInfo> totallist = getPackageManager().getInstalledApplications(0);
List<ApplicationInfo> installedlist = new ArrayList<>();
List<ApplicationInfo> defaultlist = new ArrayList<>();
for (int i = 0; i < totallist.size(); i++) {
if ((totallist.get(i).flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
installedlist.add(totallist.get(i));
}
if ((totallist.get(i).flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
defaultlist.add(totallist.get(i));
}
}
Log.d("totallist apps", String.valueOf(totallist.size()));
Log.d("installedlist apps", String.valueOf(installedlist.size()));
Log.d("defaultlist apps", String.valueOf(defaultlist.size()));
}
答案 1 :(得分:0)
非系统应用程序有两种类型:
从Google Play商店下载的应用 制造商在设备中预加载的应用 下面的代码将返回上述所有应用程序的列表:
ArrayList<ApplicationInfo> mAllApp =
mPackageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for(int i = 0; i < mAllApp.size(); i++) {
if((mAllApp.get(i).flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 1. Applications downloaded from Google Play Store
mAllApp1.add(mAllApp.get(i));
}
if((mAllApp.get(i).flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
// 2. Applications preloaded in device by manufecturer
mAllApp1.add(mAllApp.get(i));
}
}