加上权限才能获取到所有的应用获取代码 public static boolean hasApplication(Conte..._android获取安装应用列表">
当前位置:   article > 正文

Android 获取手机已安装的应用列表(适配)

android获取安装应用列表

权限

  1. <uses-permission
  2. android:name="android.permission.QUERY_ALL_PACKAGES"
  3. tools:ignore="QueryAllPackagesPermission" />

加上权限才能获取到所有的应用

获取代码

  1. public static boolean hasApplication(Context context, String packageName) {
  2. PackageManager packageManager = context.getPackageManager();
  3. if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
  4. Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
  5. List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
  6. for (int i = 0,count=list.size(); i <count ; i++) {
  7. if(list.get(i).activityInfo.applicationInfo.packageName.equalsIgnoreCase(packageName)) {
  8. return true;
  9. }
  10. }
  11. }else{
  12.         //packageManager.queryIntentActivities(intent,0)
  13. //获取系统中安装的应用包的信息
  14. List<PackageInfo> listPackageInfo = packageManager.getInstalledPackages(0);
  15. for (int i = 0; i < listPackageInfo.size(); i++) {
  16. if (listPackageInfo.get(i).packageName.equalsIgnoreCase(packageName)) {
  17. return true;
  18. }
  19. }
  20. }
  21. return false;
  22. }

低版本的手机 可以用else里边的方法 也可以用

  1. Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
  2. packageManager.queryIntentActivities(intent,0)

Intent的action 是:Intent.ACTION_MAIN 这个不要传错。

通过包名获取对应应用的启动页的全类名

  1. /**
  2. * 获取APP的启动类
  3. * @param context
  4. * @param packageName
  5. * @return
  6. */
  7. String getAppStartClass(Context context, String packageName) {
  8. PackageManager packageManager = context.getPackageManager();
  9. try {
  10. Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
  11. List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);
  12. for (int i = 0,count=list.size(); i <count ; i++) {
  13. if (TextUtils.equals(list.get(i).activityInfo.packageName, packageName)) {
  14. return list.get(i).activityInfo.name;
  15. }
  16. }
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. } finally {
  20. return "";
  21. }
  22. }

水平有限,如有问题欢迎评论区留言指正。

如果在高版本上有问题的话建议将targetSdkVersion设置成26试试。

关注我获取更多知识或者投稿

623d17826c2cbd0a01e9a85008eb2ef0.jpeg

e404728dac71a5eff7397cec6d051eb6.jpeg

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/609925
推荐阅读
相关标签
  

闽ICP备14008679号