Android实现获取应用程序相关信息列表的方法
本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性、大小和应用程序路径、应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程序,同时在获取到应用信息的时候,判断是不是系统的应用程序,这是一个应用管理器所必需具备的功能。
具体实现代码如下:
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
61
62
63
64
65
66
67
68
69
|
//AppInfoProvider.java package com.xh.ui; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; /** * 类名称:AppInfoProvider * 类描述:获取应用程序的相关信息 * 创建人:LXH */ public class AppInfoProvider { private PackageManager packageManager; //获取一个包管理器 public AppInfoProvider(Context context){ packageManager = context.getPackageManager(); } /** *获取系统中所有应用信息, *并将应用软件信息保存到list列表中。 **/ public List<AppInfo> getAllApps(){ List<AppInfo> list = new ArrayList<AppInfo>(); AppInfo myAppInfo; //获取到所有安装了的应用程序的信息,包括那些卸载了的,但没有清除数据的应用程序 List<PackageInfo> packageInfos = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for (PackageInfo info:packageInfos){ myAppInfo = new AppInfo(); //拿到包名 String packageName = info.packageName; //拿到应用程序的信息 ApplicationInfo appInfo = info.applicationInfo; //拿到应用程序的图标 Drawable icon = appInfo.loadIcon(packageManager); //拿到应用程序的大小 //long codesize = packageStats.codeSize; //Log.i("info", "-->"+codesize); //拿到应用程序的程序名 String appName = appInfo.loadLabel(packageManager).toString(); myAppInfo.setPackageName(packageName); myAppInfo.setAppName(appName); myAppInfo.setIcon(icon); if (filterApp(appInfo)){ myAppInfo.setSystemApp( false ); } else { myAppInfo.setSystemApp( true ); } list.add(myAppInfo); } return list; } /** *判断某一个应用程序是不是系统的应用程序, *如果是返回true,否则返回false。 */ public boolean filterApp(ApplicationInfo info){ //有些系统应用是可以更新的,如果用户自己下载了一个系统的应用来更新了原来的,它还是系统应用,这个就是判断这种情况的 if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0 ){ return true ; } else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0 ){ //判断是不是系统应用 return true ; } return false ; } } |
与实例相关的Java类如下:
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
|
//AppInfo.java package com.xh.ui; import android.graphics.drawable.Drawable; /** * 类名称:AppInfo * 类描述:应用程序类,包括了程序相关属性 * 创建人:LXH */ public class AppInfo { private Drawable icon; private String appName; private String packageName; private boolean isSystemApp; private long codesize; public long getCodesize() { return codesize; } public void setCodesize( long codesize) { this .codesize = codesize; } public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this .icon = icon; } public String getAppName() { return appName; } public void setAppName(String appName) { this .appName = appName; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this .packageName = packageName; } public boolean isSystemApp() { return isSystemApp; } public void setSystemApp( boolean isSystemApp) { this .isSystemApp = isSystemApp; } } |
实例中配有详尽的注释,读者可以在理解程序功能的基础上根据自身项目需求加以改进和完善。
Android实现获取应用程序相关信息列表的方法的更多相关文章
- Android中获取应用程序(包)的信息----PackageManager
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagena ...
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagenam ...
- Android中获取应用程序(包)的信息-----PackageManager的使用
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...
- 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)
转载请注明出处:http://blog.csdn.net/qinjuning 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占 ...
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...
- Android JNI 获取应用程序签名
使用Android JNI 获取应用程序签名. 获取基础上生成自己的签名password,这可以防止别人反编译找到自己的源代码password. jstring Java_com_masonsdk_j ...
- .Net中获取打印机的相关信息
原文:.Net中获取打印机的相关信息 新项目中牵涉到对打印机的一些操作,最重要的莫过于获取打印机的状态,IP等信息,代码量不大,但是也是自己花了一点时间总结出来的,希望能帮助需要的朋友. Printe ...
- 获取Java系统相关信息
package com.test; import java.util.Properties; import java.util.Map.Entry; import org.junit.Test; pu ...
- Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息
详情请看:Cordova各个插件使用介绍系列(六)—$cordovaDevice获取设备的相关信息 在项目中需要获取到当前设备,例如手机的ID,联网状态,等,然后这个Cordova里有这个插件可以用, ...
随机推荐
- [置顶] boost使用(六)
今天继续带来boost关于线程锁的一些使用,今天我使用一个更复杂的锁来控制同步,先来段简单的代码 #include <boost/thread.hpp> #include <iost ...
- Android 利用剪切板(clipboardManager )实现数据传递
首先是系统剪切板的调用服务: ClipboardManager ClipboardManager=getSystemService(Context.CLIPBOARD_SERVICE); 然后是写入, ...
- Flot chart学习笔记
背景及相关简介 在最近的BS新项目中需要用到绘图数据显示的功能.在进行充足的选择之后决定才去开源的Flot.Flot是一个jQuery绘图库.主要用于简单的绘制图表功能.具有吸引人的渲染外观和互操作的 ...
- javascript不同数据类型的转换
<script type="text/javascript"> var userEnteredNumber=prompt("Please enter a nu ...
- MongoDB(二)
通过程序来操作数据库: //链接字符串 string connectionString = "mongodb://192.168.1.107"; //数据库名 string dat ...
- Silverlight代码编写对控件的PlaneProjection.RotationY属性控制动画
Canvas c; void btnDraw_Click(object sender, RoutedEventArgs e) { Storyboard story = new Storyboard() ...
- cv2.imread BGR模式
openCV 的cv2.imread()导入图片时是BGR通道顺序,这与Matplotlib的显示,或者读取图片的通道不同,如果需要可以转换为RGB模式,以下代码显示不同之处,但BGR在许多地方使用, ...
- [原创]浅谈如何使用gcc开发NT核心驱动程序
原文链接:[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来.诚然,用VC 配合 WINDDK 的确工作的不错,但或 ...
- Sencha Touch 之 Ext.fly方法的使用
Ext.fly方法是Ext.js 4中的flyweight技术,该技术在浏览器中为使用Ext.fly方法的元素节点开辟一块内存,下一次使用Ext.fly方法的元素节点将占据同一块内存,即覆盖前一次的元 ...
- Oracle EBS-SQL (SYS-20):职责使用菜单2.sql
select frt.responsibility_name, fr.menu_id, fm.menu_name, fr.request_group_i ...