获取App信息

/**
 * 获取App信息的工具类
 * 
 */
public class AppUtil {

	/**
	 * 获取所有应用的信息。注意,这是一个很耗时的操作,一般在子线程中执行!
	 * 
	 * @param context
	 * @return
	 */
	public static List
   
   
    
     getAppInfos(Context context) {

		PackageManager pm = context.getPackageManager();

		List
    
    
     
      pkgInfos = pm.getInstalledPackages(0);

		List
     
     
      
       appInfos = new ArrayList
      
      
       
       ();

		for (PackageInfo pkgInfo : pkgInfos) {

			AppInfo appInfo = new AppInfo();
			// 应用名
			appInfo.setmAppName(pkgInfo.applicationInfo.loadLabel(pm)
					.toString());
			// 应用图标
			appInfo.setmIcon(pkgInfo.applicationInfo.loadIcon(pm));
			// 包名
			appInfo.setmPkgName(pkgInfo.packageName);
			// 版本名
			appInfo.setmVersionName(pkgInfo.versionName);
			// 版本号
			appInfo.setmVersionCode(pkgInfo.versionCode);

			File file = new File(pkgInfo.applicationInfo.sourceDir);
			// 安装时间
			appInfo.setmInstalledTime(file.lastModified());
			// 包大小
			appInfo.setmPackageSize(file.length());
			// 是否是系统应用
			appInfo.setSystem(isSystem(pkgInfo));

			appInfos.add(appInfo);
		}

		return appInfos;
	}

    /**
	 * 获取所有在桌面产生了图标的应用程序的信息
	 * 
	 * @param context
	 * @return
	 */
	public static List
       
       
         getLauncherAppInfos(Context context) { List 
        
          appInfos = new ArrayList 
         
           (); PackageManager pm = context.getPackageManager(); Intent intent=new Intent(); intent.setAction("android.intent.action.MAIN"); intent.setAction("android.intent.category.LAUNCHER"); List 
          
            resolveInfos = pm.queryIntentActivities(intent, 0); for(ResolveInfo resolveInfo:resolveInfos){ String pkgName=resolveInfo.activityInfo.applicationInfo.packageName; AppInfo appInfo=getAppInfoByPkgName(context, pkgName); appInfos.add(appInfo); } return appInfos; } /** * 根据包名获取应用信息 * * @param context * @param pkgName * @return */ public static AppInfo getAppInfoByPkgName(Context context, String pkgName) { try { PackageManager pm = context.getPackageManager(); PackageInfo pkgInfo = pm.getPackageInfo(pkgName, 0); AppInfo appInfo = new AppInfo(); // 应用名 appInfo.setmAppName(pkgInfo.applicationInfo.loadLabel(pm) .toString()); // 应用图标 appInfo.setmIcon(pkgInfo.applicationInfo.loadIcon(pm)); // 包名 appInfo.setmPkgName(pkgInfo.packageName); // 版本名 appInfo.setmVersionName(pkgInfo.versionName); // 版本号 appInfo.setmVersionCode(pkgInfo.versionCode); File file = new File(pkgInfo.applicationInfo.sourceDir); // 安装时间 appInfo.setmInstalledTime(file.lastModified()); // 包大小 appInfo.setmPackageSize(file.length()); // 是否是系统应用 appInfo.setSystem(isSystem(pkgInfo)); return appInfo; } catch (NameNotFoundException e) { e.printStackTrace(); } return null; } /** * 判断是否是系统应用 * * @param pkgInfo * @return */ public static boolean isSystem(PackageInfo pkgInfo) { if ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { // 非系统应用 return false; } return true; } /** * 根据包名判断某个应用是否已经安装 * * @param context * @param pkgName * @return */ public static boolean isInstalled(Context context, String pkgName) { try { PackageManager pm = context.getPackageManager(); PackageInfo pkgInfo = pm.getPackageInfo(pkgName, 0); if (pkgInfo != null) { return true; } } catch (NameNotFoundException e) { e.printStackTrace(); } return false; } /** * 获取当前正在运行的且位于栈顶的应用信息 * * @param context * @return */ public static AppInfo getRunningTaskTopAppInfo(Context context) { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); RunningTaskInfo runningTaskInfo = am.getRunningTasks(1).get(0); String pkgName = runningTaskInfo.topActivity.getPackageName(); AppInfo appInfo = getAppInfoByPkgName(context, pkgName); return appInfo; } /** * 获取指定数目的当前正在运行的应用信息 * * @param context * @param num * @return */ public static List 
           
             getRunningTaskAppInfo(Context context, int num) { List 
            
              appInfos = new ArrayList 
             
               (); ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List 
              
                runningTaskInfos = am.getRunningTasks(num); if (runningTaskInfos != null) { for (RunningTaskInfo runningTaskInfo : runningTaskInfos) { String pkgName = runningTaskInfo.topActivity.getPackageName(); AppInfo appInfo = getAppInfoByPkgName(context, pkgName); if (appInfo != null) { appInfos.add(appInfo); } } } return appInfos; } } 
               
              
             
            
           
          
         
       
      
      
     
     
    
    
   
   



public class AppInfo {
	// 应用名
	private String mAppName;
	// 应用图标
	private Drawable mIcon;
	// 安装时间
	private long mInstalledTime;
	// 包大小
	private long mPackageSize;
	// 包名
	private String mPkgName;
	// 是否是系统软件
	private boolean isSystem;
	// 版本名
	private String mVersionName;
	// 版本号
	private int mVersionCode;

	public Drawable getmIcon() {
		return mIcon;
	}

	public void setmIcon(Drawable mIcon) {
		this.mIcon = mIcon;
	}

	public String getmAppName() {
		return mAppName;
	}

	public void setmAppName(String mAppName) {
		this.mAppName = mAppName;
	}

	public long getmInstalledTime() {
		return mInstalledTime;
	}

	public void setmInstalledTime(long mInstalledTime) {
		this.mInstalledTime = mInstalledTime;
	}

	public long getmPackageSize() {
		return mPackageSize;
	}

	public void setmPackageSize(long mPackageSize) {
		this.mPackageSize = mPackageSize;
	}

	public String getmPkgName() {
		return mPkgName;
	}

	public void setmPkgName(String mPkgName) {
		this.mPkgName = mPkgName;
	}

	public boolean isSystem() {
		return isSystem;
	}

	public void setSystem(boolean isSystem) {
		this.isSystem = isSystem;
	}

	public String getmVersionName() {
		return mVersionName;
	}

	public void setmVersionName(String mVersionName) {
		this.mVersionName = mVersionName;
	}

	public int getmVersionCode() {
		return mVersionCode;
	}

	public void setmVersionCode(int mVersionCode) {
		this.mVersionCode = mVersionCode;
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值