1.PackageManager这个类,表层意思是包管理者,既然可以管理包,那么包下的一些东西便可以获取,其中可以获取应用图标和应用名称以及包名。

通过下面一行代码实例化PackageManager类:

PackageManager manager = getPackageManager();//实例化PackageMangager

2.初始化PackageManage后,可以获得PackageInfo这个类的对象,即包的相关信息:

PackageInfo info = manager.getPackageInfo(getPackageName(), 0);//获得包的信息

获得PackageInfo对象后,可以获得相应的信息,而这些信息有点对应于AndroidManifest.xml文件下的各个属性和标记,貌似可以通通获得,不信你看下面的代码:

首先,先附上一个新建项目后所生成的AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.androidtest"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.example.androidtest.MainActivity"android:label="@string/app_name"android:icon="@drawable/app" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

在这个xml文件中,有versionCode和versionName这两个相关内容,可以通过下面的代码获取:

int versioncode=info.versionCode;//获得版本码
String versionname=info.versionName;//获得版本号

也可以获得 permission权限,application应用,providers,activity,receiver,service服务等等:

String permission=permissionInfos.toString();
ApplicationInfo applicationInfo=info.applicationInfo;//获得application应用
ProviderInfo[] providerInfo=info.providers;//获得providers
ActivityInfo[] activityInfo=info.activities;//获得activity
activityInfo=info.receivers;//获得receiver
ServiceInfo[] serviceInfo=info.services;//获得service

其中获得ApplicationInfo的应用信息类的对象后,还可以获得该应用的图标,名称,类名等等:

ApplicationInfo applicationInfo=info.applicationInfo;//获得application应用
int icon=applicationInfo.icon;//获取应用图标
String classname=applicationInfo.className;//获得类名

3.以上获得的只不过是属于该项目中的相关信息,如果要获得手机中所有已经安装过的apk应用程序时,就应该用下面这行代码:

List<PackageInfo> packageInfos = getPackageManager().getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

如果要设置文本和图片的话可以利用下面的代码,其中position是一个int整型

tv.setText(packageInfos.get(position).applicationInfo.loadLabel(getPackageManager()));// 获取应用名称
iv.setImageDrawable(packageInfos.get(position).applicationInfo.loadIcon(getPackageManager()));// 获取应用图标

完整代码是:

class GridViewAdapter extends BaseAdapter {LayoutInflater inflater;public GridViewAdapter(Context context) {inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn packageInfos.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn packageInfos.get(arg0);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = inflater.inflate(R.layout.gv_item, null);TextView tv = (TextView) view.findViewById(R.id.gv_item_appname);ImageView iv = (ImageView) view.findViewById(R.id.gv_item_icon);//tv2.setText(packageInfos.get(position).packageName);tv.setText(packageInfos.get(position).applicationInfo.loadLabel(getPackageManager()));// 获取应用名称iv.setImageDrawable(packageInfos.get(position).applicationInfo.loadIcon(getPackageManager()));// 获取应用图标return view;}}

要获得相应的包名可以通过packageInfos.get(position).packageName,在Eclipse工具中可以利用提示来获取相应的信息,activity,service,permission等等都可以获得。

4.以上就是对PackageManager类的简单介绍,仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢!



Android中PackageManager类的简单介绍相关推荐

  1. java简单通讯录的实现02person类_Java中Math类的简单介绍

    我想对于Math类大家一定很熟悉了,是Java提供的一个用来进行简单数学运算的工具类.对于Math类来说,常用的方法有: 加法 public static int addExact(int x, in ...

  2. Android AccountManager 账户同步管理简单介绍

    Android AccountManager 账户同步管理简单介绍 文章目录 Android AccountManager 账户同步管理简单介绍 前言 AccountManager 简介 如何让自己的 ...

  3. android服务绑定异步,Android中异步类AsyncTask用法总结

    本文总结分析了Android中异步类AsyncTask用法.分享给大家供大家参考,具体如下: 最近整理笔记的时候,看到有关AsyncTask不是很理解,重新疏导了一下,有在网上找了一些资料,个人不敢独 ...

  4. python shelve模块_Python中shelve模块的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中shelve模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. shelve:对象持久化的保存的模块,将对象保存到文件 ...

  5. java color类 蓝色_java中Color类的简单总结

    标签: java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 p ...

  6. php有lambda表达式吗,Python中lambda表达式的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中lambda表达式的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一:匿名函数的定义 lambda parameter ...

  7. android.hardware.Camera类及其标准接口介绍

    android.hardware.Camera类及其标准接口介绍,API level 19 http://developer.android.com/reference/android/hardwar ...

  8. PowerBI中使用SVG图标简单介绍

    PowerBI中使用SVG图标简单介绍 1. 什么是SVG? SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 是使用 XML 来描述二维图形和绘图程序的语言. ...

  9. 浏览器中 F12 功能的简单介绍

    chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...

最新文章

  1. 不能从农行服务器获取配置文件,#新手入门#请问,农行网银用的好好的突然出现这个就不能用了怎么解决呢?谢谢...
  2. 手机连接蓝牙扫码枪_原来手机蓝牙的隐藏功能这么多,你不会还只用来连接耳机吧?...
  3. php类的的属性值,PHP面向对象之旅:类的属性
  4. Shuffle'm Up——简单模拟
  5. 一起谈.NET技术,使用WCF实现SOA面向服务编程—— 架构设计
  6. 免费python自学攻略-自学python二三事
  7. Security+ 学习笔记16 密钥管理
  8. 一个桌面系统的微信公众号开发
  9. 【老孙随笔】想学程序设计,先学人生设计!
  10. Python轻松多条件计数与求和
  11. 14Python爬虫---爬虫伪装浏览器
  12. [Java] 用java写的植物大战僵尸辅助
  13. 2022年最新广东交安安全员考试题库及答案
  14. sd卡无法读取怎么办?内存卡数据恢复,4个好用方法
  15. 震撼人心的爱·《山月不知心底事》·一
  16. 百度网盘秒传链接怎么用及实现原理
  17. 上映半个月,微博热搜近10次,长歌行的魅力到底在哪 ?
  18. linux怎么看go写的程序进程,Linux中查看进程状态信息-Go语言中文社区
  19. 国务院办公厅关于2013年部分节假日安排的通知(转载)
  20. 求向量a在向量b上的投影

热门文章

  1. 多对多的添加修改,显示,的逻辑步骤
  2. javascript设计模式——Publish/Subscribe
  3. 实现跨域访问---同源策略 、常见跨域方法
  4. [HTTP] Cookie
  5. Vue.Draggable拖拽功能的配置和使用方法
  6. 模式识别中的特征提取及其内在意义
  7. 空间直角坐标转换之仿射变换(转)
  8. Vue (响应式原理-模拟-4-Dep)
  9. PAT乙级 1029 旧键盘
  10. pta-2、求三角形面积及周长 (10 分)