已知包名如何获取Android已安装应用的申请权限
嘿,针对你要获取指定包名应用权限的需求,我整理了几个实用的方法,不管是普通用户还是开发者都能用上:
方法一:使用ADB命令(最快捷,适合开发者/懂点技术的用户)
这是最直接的方式,前提是你已经在电脑上配置好ADB环境,并且手机开启了USB调试:
- 用USB连接手机和电脑,先运行
adb devices验证ADB能正常识别设备 - 执行以下命令获取该应用所有声明的权限(包括已授予和未授予):
adb shell dumpsys package com.android.something | grep -A 15 "Requested Permissions" - 如果只想看已授予的权限,可以用这个命令:
要是输出太杂,还可以加过滤只显示权限名称:adb shell dumpsys package com.android.something | grep -A 15 "Granted Permissions"adb shell dumpsys package com.android.something | grep -E "android.permission.[A-Z_]+"
方法二:Android代码实现(适合开发者集成到自己的应用中)
如果你想在自己的APP里获取指定包名应用的权限,可以用PackageManager API:
import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.util.Log; // 替换成你要查询的目标包名 String targetPackage = "com.android.something"; PackageManager packageManager = getApplicationContext().getPackageManager(); try { // 获取应用的权限信息 PackageInfo packageInfo = packageManager.getPackageInfo( targetPackage, PackageManager.GET_PERMISSIONS ); String[] requestedPermissions = packageInfo.requestedPermissions; if (requestedPermissions != null) { for (String permission : requestedPermissions) { // 检查权限是否已被授予 int grantStatus = packageManager.checkPermission(permission, targetPackage); String status = grantStatus == PackageManager.PERMISSION_GRANTED ? "已授予" : "未授予"; Log.d("TargetAppPermissions", String.format("%s: %s", permission, status)); } } else { Log.d("TargetAppPermissions", "该应用未申请任何权限"); } } catch (PackageManager.NameNotFoundException e) { Log.e("TargetAppPermissions", "未找到指定包名的应用", e); }
注意:Android 11及以上版本,你的应用需要申请
android.permission.QUERY_ALL_PACKAGES权限(或者在manifest中添加<queries>标签指定目标包名),才能正常获取其他应用的信息。
方法三:系统设置手动查看(适合普通用户)
不需要任何技术基础,直接在手机系统里操作:
- 打开手机的「设置」应用
- 找到「应用管理」或「应用」选项(不同品牌手机名称可能略有不同)
- 在应用列表里搜索
com.android.something,找到目标应用 - 进入应用详情页,点击「权限」选项,就能看到该应用所有申请的权限,以及每个权限的授予状态
内容的提问来源于stack exchange,提问作者JustF




