加上权限才能获取到所有的应用获取代码 public static boolean hasApplication(Conte..._android获取安装应用列表">
赞
踩
- <uses-permission
- android:name="android.permission.QUERY_ALL_PACKAGES"
- tools:ignore="QueryAllPackagesPermission" />
加上权限才能获取到所有的应用
- public static boolean hasApplication(Context context, String packageName) {
- PackageManager packageManager = context.getPackageManager();
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
- Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
- List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_ALL);
- for (int i = 0,count=list.size(); i <count ; i++) {
- if(list.get(i).activityInfo.applicationInfo.packageName.equalsIgnoreCase(packageName)) {
- return true;
- }
- }
- }else{
- //packageManager.queryIntentActivities(intent,0)
- //获取系统中安装的应用包的信息
- List<PackageInfo> listPackageInfo = packageManager.getInstalledPackages(0);
- for (int i = 0; i < listPackageInfo.size(); i++) {
- if (listPackageInfo.get(i).packageName.equalsIgnoreCase(packageName)) {
- return true;
- }
- }
- }
-
-
- return false;
-
-
- }
低版本的手机 可以用else里边的方法 也可以用
- Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
- packageManager.queryIntentActivities(intent,0)
Intent的action 是:Intent.ACTION_MAIN 这个不要传错。
- /**
- * 获取APP的启动类
- * @param context
- * @param packageName
- * @return
- */
- String getAppStartClass(Context context, String packageName) {
- PackageManager packageManager = context.getPackageManager();
- try {
- Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER);
- List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);
- for (int i = 0,count=list.size(); i <count ; i++) {
- if (TextUtils.equals(list.get(i).activityInfo.packageName, packageName)) {
- return list.get(i).activityInfo.name;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- return "";
- }
- }
水平有限,如有问题欢迎评论区留言指正。
如果在高版本上有问题的话建议将
targetSdkVersion设置成26试试。
关注我获取更多知识或者投稿
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。