Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259

Android中获取系统上安装的APP信息,并且提供卸载、区别用户应用和系统应用的小程序,供初学者参考。

public class PakageInfoProvider {

private static final String tag = "GetappinfoActivity";

private Context context;

private List<AppInfo> appInfos;

private AppInfo appInfo;

public PakageInfoProvider(Context context) {

super();

this.context = context;

}

public List<AppInfo> getAppInfo() {

PackageManager pm = context.getPackageManager();

List<PackageInfo> pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

appInfos = new ArrayList<AppInfo>();

for (PackageInfo packageInfo : pakageinfos) {

appInfo = new AppInfo();

//获取字符串方法

context.getString(R.string.app_name);

context.getResources().getString(R.string.app_name);

//获取尺寸资源方法

context.getResources().getDimension(R.dimen.test);

//获取xml文件并且返回的是XmlResourceParse类,其继承与XmlPullParse

XmlResourceParser xmlrp = context.getResources().getXml(R.xml.yo);

// 获取应用程序的名称,不是包名,而是清单文件中的labelname

String str_name = packageInfo.applicationInfo.loadLabel(pm).toString();

appInfo.setAppName(str_name);

// 获取应用程序的版本号码

String version = packageInfo.versionName;

appInfo.setAppVersion(version);

// 获取应用程序的快捷方式图标

Drawable drawable = packageInfo.applicationInfo.loadIcon(pm);

appInfo.setDrawable(drawable);

// 获取应用程序是否是第三方应用程序

appInfo.setIsUserApp(filterApp(packageInfo.applicationInfo));

//给一同程序设置包名

appInfo.setPackageName(packageInfo.packageName);

Logger.i(tag, "版本号:" + version + "程序名称:" + str_name);

appInfos.add(appInfo);

appInfo = null;

}

return appInfos;

}

/**

* 三方应用程序的过滤器

*

* @param info

* @return 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;

}

}

Android中获取系统上安装的APP信息的更多相关文章

  1. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  2. Android中获取系统的时间

    activity代码 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); set ...

  3. windows系统上安装与使用Android NDK r5 (转)

    windows系统上安装与使用Android NDK r5  很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单 ...

  4. windows系统上安装与使用Android NDK r5

    windows系统上安装与使用Android NDK r5  很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单 ...

  5. 利用RxJava获取手机已安装的App的图片、应用名称和版本号

    先上效果图: 获取手机已安装的App列表利用Android系统API就可以办到,这里为什么要引入RxJava?现在我们假设一下有下面几个需求: 1.我们不需要所有的App,只需要用户安装的第三方App ...

  6. Android中获取应用程序(包)的信息----PackageManager

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:   第一部分: 获取应用程序的packagena ...

  7. Android中获取应用程序(包)的信息-----PackageManager的使用(一)

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下:  第一部分: 获取应用程序的packagenam ...

  8. Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

    今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...

  9. Android中获取应用程序(包)的信息-----PackageManager的使用

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...

随机推荐

  1. HTML5学习笔记(十八):闭包

    高阶函数 JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,也可以返回一个函数,这种函数就称之为高阶函数. 函数作为参 ...

  2. 行为类模式(七):观察者(Observer)

    定义 定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新. UML 优点 观察者和被观察者之间是松耦合的,分别可以各自独立改变. Subject在发送 ...

  3. C++中的static 成员变量的一些注意点

    C++中的static成员变量主要用来为多个对象共享数据 例: #include <iostream> using namespace std; class Student{ public ...

  4. python __name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  5. Ubuntu14.04 64bit 编译安装nginx1.7+php5.4+mysql5.6

    我的操作系统是Ubuntu14.04,其它linux系统的操作流程类似. 主要安装的软件是nginx1.7+php5.4+mysql5.6 1. 创建必要目录 sudo mkdir ~/setup s ...

  6. 对Inductive Bias(归纳偏置)的理解

    参考资料: https://en.wikipedia.org/wiki/Inductive_bias http://blog.sina.com.cn/s/blog_616684a90100emkd.h ...

  7. Python3下requests库发送multipart/form-data类型请求

    [本文出自天外归云的博客园] 要模拟multipart/form-data类型请求,可以用python3的requests库完成.代码示例如下: #请求的接口url url = "url&q ...

  8. 进入Linux救援(rescue)模式的四大法门

    原文:http://blog.51cto.com/xxrenzhe/1272838 适用场景: 当误操作修改系统启动文件/etc/fstab, /etc/rc.d/rc.sysinit时,就会造成系统 ...

  9. 针对C程序员的 C++

    C++是在C语言基础上添加面向对象扩展而成.C++在提供很多传统C语言没有的优点的同时也保持了与C语言的兼容性,这样人们就可以在一个程序中同时使用C和C++.在比赛当中,您必须使用一些基本的C++功能 ...

  10. Namespace declaration statement has to be the very first statement or after any declare call in the script

    0x00缘起 代码部署在windows上,出现了一个bug,临时用记事本打开修改了一下,于是出现了500错误 0x01排错 查看log,提示如下 "Namespace declaration ...