android获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载

获取所有应用及相关信息


方法1:ResolveInfo

[java]  view plain copy
  1. 获取全部应用:  
  2.     PackageManager packageManager = getPackageManager();  
  3.     Intent mIntent = new Intent(Intent.ACTION_MAIN, null);  
  4.     mIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
  5.     List<ResolveInfo> listAllApps = packageManager.queryIntentActivities(mIntent, 0);  
  6. 判断是否系统应用:  
  7.     ResolveInfo appInfo = listAllApps.get(position);  
  8.     String pkgName = appInfo.activityInfo.packageName;//获取包名  
  9.     //根据包名获取PackageInfo mPackageInfo;(需要处理异常)  
  10.     mPackageInfo = mContext.getPackageManager().getPackageInfo(pkgName, 0);  
  11.     if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {  
  12.             //第三方应用  
  13.         } else {  
  14.             //系统应用  
  15.         }  
  16. 获取相关信息:  
  17. ResolveInfo mResolveInfo ;  
  18. 获取包名: mResolveInfo.activityInfo.packageName;  
  19. 获取icon: mResolveInfo.loadIcon(packageManager);  
  20. 获取应用名: mResolveInfo.loadLabel(packageManager).toString();  


方法2:PackageInfo

[java]  view plain copy
  1. 获取全部应用:  
  2. PackageManager packageManager = this.getPackageManager();   
  3. List<PackageInfo> packageInfoList = packageInfoList .getInstalledPackages(0);    
  4. 判断是否系统应用:  
  5.  List<PackageInfo> apps = new ArrayList<PackageInfo>();  
  6.  for (int i = 0; i < packageInfoList.size(); i++) {  
  7.             PackageInfo pak = (PackageInfo)packageInfoList.get(i);  
  8.             //判断是否为系统预装的应用  
  9.             if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {  
  10.                 // 第三方应用  
  11.                 apps.add(pak);  
  12.             } else  
  13.         {  
  14.         //系统应用  
  15.         }  
  16.         }  
  17. 获取相关信息:  
  18. PackageInfo mPackageInfo;  
  19. 获取包名: mPackageInfo.packageName  
  20. 获取icon: mPackageInfo.getApplicationIcon(applicationInfo);  
  21. 获取应用名: mPackageInfo.getApplicationLabel(applicationInfo);  
  22. 获取使用权限:  
  23. mPackageInfo.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS).requestedPermissions;  

监听应用的安装和卸载:

[java]  view plain copy
  1. //////////////注册广播,监听安装和卸载  
  2. public void onReceive(Context context, Intent intent) {  
  3. if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {  
  4. //获取安装应用的包名  
  5. String packageName = intent.getDataString();  
  6. else if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {  
  7. //获取卸载应用的包名  
  8. String packageName = intent.getDataString();  
  9. }  
  10. }  

你可能感兴趣的:(android)