我是靠谱客的博主 想人陪薯片,这篇文章主要介绍Android 获取本地已安装的应用程序,现在分享给大家,希望可以做个参考。

有一个需求获取本地指定的系统App和已经下载的App列表:

实现非常简单,首先获取本机已安装的App,然后把我们指定的系统App过滤掉,存入一个List集合中,然后把其他的系统App过滤掉,剩下的在放入,另外一个List集合中,组合就Ok。

贴下主要代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/** * Created by Xiho on 12:10 * MyBlog: xuhao.tech * GitHub: github.com/git-xuhao * Function: */ public class AppUtils { public static final String PACKAGE_OTA="com.sunmi.ota"; public static final String PACKAGE_MARKET="woyou.market"; public static final String PACKAGE_HARD_WARE_KEEPER="com.woyou.hardwarekeeper"; public static final String PACKAGE_UDH="com.woyou.udh"; public static final String PACKAGE_SETTING="com.android.settings"; /** * 过滤自定义的App和已下载的App * @param packageManager * @return */ public static List<AppInfo> scanInstallApp(PackageManager packageManager,int filterType) { List<AppInfo> myAppInfos = new ArrayList<AppInfo>(); List<AppInfo> mFilterApps = new ArrayList<AppInfo>(); try { List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0); for (int i = 0; i < packageInfos.size(); i++) { PackageInfo packageInfo = packageInfos.get(i); //过滤指定的app String tempPackageName=packageInfo.packageName; if(tempPackageName.equals(PACKAGE_OTA)||tempPackageName.equals(PACKAGE_MARKET)||tempPackageName.equals(PACKAGE_HARD_WARE_KEEPER) ||tempPackageName.equals(PACKAGE_UDH)||tempPackageName.equals(PACKAGE_SETTING)){ AppInfo appInfo = new AppInfo(); appInfo.setAppName((String) packageInfo.applicationInfo.loadLabel(packageManager)); if (packageInfo.applicationInfo.loadIcon(packageManager) == null) { continue; } appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager)); mFilterApps.add(appInfo); continue; } //过滤掉系统app if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) { continue; } AppInfo appInfo = new AppInfo(); appInfo.setAppName((String) packageInfo.applicationInfo.loadLabel(packageManager)); if (packageInfo.applicationInfo.loadIcon(packageManager) == null) { continue; } appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager)); myAppInfos.add(appInfo); } myAppInfos.addAll(mFilterApps); } catch (Exception e) { e.printStackTrace(); } return myAppInfos; }
由于内容很简单,就不上其他源码了。

最后

以上就是想人陪薯片最近收集整理的关于Android 获取本地已安装的应用程序的全部内容,更多相关Android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部