PackageManager的简单用法
2012-07-14 20:58
148 查看
android系统中,有很多管理服务相关的类:TelephoneManager,WindowManager,SmsManager,ActivityManager等。
本文主要介绍下packageManager。这个服务主要用户获取应用程序中的packageName,icon,label等,初次之外,他也可以获取应用程序的占用内存大小以及缓存大小等信息。
•安装,卸载应用
•查询permission相关信息
•查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
•查询已安装应用
•增加,删除permission
•清除用户数据、缓存,代码段等
我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表
首先来看一张图:
这张图很清晰的解释了各个工具类对应的能获取应用的相关信息。
对于PackageManger 类说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。
Demo1:利用PackagerManager这个类获取应用程序的相关的信息。得到应用程序的列表。
另外一个作用就是获取Launcher的相关信息。
本文主要介绍下packageManager。这个服务主要用户获取应用程序中的packageName,icon,label等,初次之外,他也可以获取应用程序的占用内存大小以及缓存大小等信息。
•安装,卸载应用
•查询permission相关信息
•查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
•查询已安装应用
•增加,删除permission
•清除用户数据、缓存,代码段等
我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表
首先来看一张图:
这张图很清晰的解释了各个工具类对应的能获取应用的相关信息。
对于PackageManger 类说明: 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得。
Demo1:利用PackagerManager这个类获取应用程序的相关的信息。得到应用程序的列表。
public class GetPackAge { private Context context; private PackageManager pm; public GetPackAge(Context context) { this.context = context; pm = context.getPackageManager(); } public List<appinfo> getappinfo() throws Exception { //这句的意思是获取有可能被系统删除的但是还在应用程序列表中保留的appname.因为有些apk可能被删掉 但是数据还在 所以用GET_UNINSTALLED_PACKAGES 这个flag List<PackageInfo> infos = pm .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); List<appinfo> appinfos = new ArrayList<appinfo>(); for (PackageInfo info : infos) { appinfo app = new appinfo(); // packagename String packname = info.packageName; app.setAppName(packname); // appname String appname = info.applicationInfo.loadLabel(pm).toString(); app.setAppName(appname); // icon Drawable appicon = info.applicationInfo.loadIcon(pm); app.setAppicon(appicon); // version String appversion = info.versionName; app.setVersion(appversion); ApplicationInfo appinfo = pm.getPackageInfo(packname, 0).applicationInfo; if (filterApp(appinfo)) { app.setSystem(true); } else { app.setSystem(false); } appinfos.add(app); app = null; } return appinfos; } }关于测试类主要是就是建一个测试类,然后测试打印出自己需要的信息就可以了。
另外一个作用就是获取Launcher的相关信息。
package com.luochuang.luncherTest; import java.util.ArrayList; import java.util.List; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import com.luochuang.bean.LauncherItem; public class LauncherManager { private Context context; private PackageManager packager; public LauncherManager(Context context) { this.context = context; packager = context.getPackageManager(); } public List<LauncherItem> getluncher() { List<LauncherItem> lvalue = new ArrayList<LauncherItem>(); Intent it = new Intent(Intent.ACTION_MAIN); it.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> ResolveInfos = packager.queryIntentActivities(it, 0); for (int i = 0; i < ResolveInfos.size(); i++) { ActivityInfo infos = ResolveInfos.get(i).activityInfo; String name = infos.loadLabel(packager).toString(); Drawable image = infos.loadIcon(packager); ComponentName component = new ComponentName( infos.applicationInfo.packageName, infos.name); LauncherItem item = new LauncherItem(name,image,component); lvalue.add(item); } return lvalue; } }
相关文章推荐
- 68启动应用程序&&PackageManager的简单的用法
- Less简介及简单用法
- HttpClient-4.2.4的使用(简单用法)
- PackageManager,PackageInfo,ApplicationInfo ,ResolveInfo 的用法
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
- next_permutation的简单用法及例题
- crontab 和 at 的简单区别和用法
- Eigen: C++开源矩阵计算工具——Eigen的简单用法
- 串口类CSerialPort的简单用法
- 简单名称值对节点类NameValuePair的用法和简介
- 简单易懂的解释c#的abstract和virtual的用法和区别
- Android AsyncTask 简单用法
- Listbox简单用法
- WebClient和HttpWebRequest的简单用法
- UIView简单用法
- 安卓PathMeasure的简单用法
- OkHttp的get请求的简单用法
- DBLP数据集简介及简单用法
- execute immediate的简单用法(oracle)
- [原创] pycurl简单用法与urllib2性能对比