Android实现获取应用程序相关信息列表的方法

本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性、大小和应用程序路径、应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程序,同时在获取到应用信息的时候,判断是不是系统的应用程序,这是一个应用管理器所必需具备的功能。

具体实现代码如下:

//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类如下:

//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; } }

实例中配有详尽的注释,读者可以在理解程序功能的基础上根据自身项目需求加以改进和完善。

时间: 2024-09-21 00:49:12

Android实现获取应用程序相关信息列表的方法的相关文章

Android实现获取应用程序相关信息列表的方法_Android

本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性.大小和应用程序路径.应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程序,同时在获取到应用信息的时候,判断是不是系统的应用程序,这是一个应用管理器所必需具备的功能. 具体实现代码如下: //AppInfoProvider.java package com.xh.ui; import java.util.ArrayList; import java.util.List;

android中获取当前程序路径

(1)android中获取当前程序路径 getApplicationContext().getFilesDir().getAbsolutePath() (2)android取已安装的程序列表 List<PackageInfo> packageInfoList =  getPackageManager().getInstalledPackages(0); (3)对安装路径的说明 http://developer.android.com/guide/appendix/install-locatio

.Net中获取打印机的相关信息

原文:.Net中获取打印机的相关信息 新项目中牵涉到对打印机的一些操作,最重要的莫过于获取打印机的状态,IP等信息,代码量不大,但是也是自己花了一点时间总结出来的,希望能帮助需要的朋友. PrinterCommunicate用于连接打印机并发送指令 1 public class PrinterCommunicate 2 { 3 4 public bool CheckNetWorkConnection(string strPrinterIP, int intPrinterPort) 5 { 6 S

php获取服务器操作系统相关信息的方法_php技巧

本文实例讲述了php获取服务器操作系统相关信息的方法.分享给大家供大家参考,具体如下: 下面是PHP获取当前服务器信息的基本语句. PHP程式版本: <?PHP echo PHP_VERSION; ?> ZEND版本: <?PHP echo zend_version(); ?> MYSQL支持: <?php echo function_exists (mysql_close)?"是":"否"; ?> MySQL数据库持续连接 :

Android中AlertDilog显示简单和复杂列表的方法_Android

本文实例讲述了Android中AlertDialog显示简单和复杂列表的方法.分享给大家供大家参考,具体如下: AlertDialog 显示简单列表 setItems import Android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import andro

Android编程判断应用程序是否已安装的方法_Android

本文实例讲述了Android编程判断应用程序是否已安装的方法.分享给大家供大家参考,具体如下: 这里以twitter程序为例,假设twitter程序包名为"com.twitter.android".这时候可用以下代码来判断是否被安装. PackageInfo packageInfo; try { packageInfo = this.getPackageManager().getPackageInfo( "com.twitter.android", 0); } ca

android通过Location API显示地址信息的实现方法_Android

本文实例讲述了android通过Location API显示地址信息的实现方法.分享给大家供大家参考.具体如下: android的Locatin API,可以通过Geocoder类,显示具体经纬度的地址信息.如: 通过Geocoder的方法getFromLocation()可以得到Address对象的List.我只取一个Address结果,可以取多个,但是意义不大. StringBuilder builder = new StringBuilder(); builder.append("北纬:&

Android编程获取控件宽和高的方法总结分析_Android

本文总结分析了Android编程获取控件宽和高的方法.分享给大家供大家参考,具体如下: 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一个控件,这个控件非常简单: public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MyIm

Android中AlertDilog显示简单和复杂列表的方法

本文实例讲述了Android中AlertDialog显示简单和复杂列表的方法.分享给大家供大家参考,具体如下: AlertDialog 显示简单列表 setItems import Android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import andro