使用adb,我如何知道Android应用程序需要哪些权限?因为我想在不同的设备上显示多个应用程序的权限,所以在Google Play或Settings〉Applications manager中查看它们需要太多的手工工作。
Google Play
Settings
Applications manager
pxq42qpu1#
我只想把Jason和Juuso的答案结合起来,注意前者列出了 granted 的权限,而后者列出了 requested 的权限(包括已授予的权限)。要查看 * 仅授予的权限 *(但忽略已请求但未授予的权限),请使用
adb shell dumpsys package packagename
并检查输出底部的grantedPermissions部分。列出 * 所有权限 *(已请求但未授予+已请求但已授予):1.注意软件包的APK。您可以运行相同的命令
grantedPermissions
并从其输出的codePath元素获取APK路径。1.(如果您的设备/模拟器上没有aapt)您需要从设备/模拟器中提取apk,正如Juuso Ohtonen在他的回答中指出的那样。
codePath
aapt
adb pull /data/app/com.your.package.apk
1.列出包的所有权限如果设备/模拟器中缺少aapt,可以在Android SDK中的build-tools/<version>/下找到。然后执行
build-tools/<version>/
aapt d permissions /path/to/com.your.package.apk
iaqfqrcu2#
最快的方法:adb shell转储程序包程序包名|grep权限
kq0g1dla3#
1.列出所有应用程序及其安装路径(如果您只对第三方应用程序感兴趣,请使用-3标记)。作为示例,让我们尝试找出YouTube应用程序权限。adb shell pm list packages -f输出:...package:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube...1.从设备中拉出选定的APK:adb pull /data/app/com.google.android.youtube-1.apk1.列出权限aapt d permissions com.google.android.youtube-1.apk输出:
-3
adb shell pm list packages -f
adb pull /data/app/com.google.android.youtube-1.apk
aapt d permissions com.google.android.youtube-1.apk
uses-permission: android.permission.BROADCAST_STICKY uses-permission: android.permission.CALL_PHONE uses-permission: android.permission.CALL_PRIVILEGED uses-permission: android.permission.WRITE_SETTINGS uses-permission: android.permission.WRITE_SECURE_SETTINGS uses-permission: android.permission.READ_CONTACTS uses-permission: android.permission.READ_CALL_LOG uses-permission: android.permission.WRITE_CONTACTS uses-permission: android.permission.WRITE_CALL_LOG uses-permission: android.permission.SYSTEM_ALERT_WINDOW uses-permission: android.permission.INTERNAL_SYSTEM_WINDOW uses-permission: android.permission.ADD_SYSTEM_SERVICE uses-permission: android.permission.VIBRATE uses-permission: android.permission.BLUETOOTH uses-permission: android.permission.BLUETOOTH_ADMIN uses-permission: android.permission.REORDER_TASKS uses-permission: android.permission.CHANGE_CONFIGURATION ...
...
n3h0vuf24#
dumpsys不会给予你所有权限。获取所有默认Android权限的方法是使用dumpsys i.c.w. appops。有不同种类的权限;例如,一个接受allow、deny、ignore、default,而另一个只接受false和true。aapt并非在所有系统上都可用(尽管我非常喜欢它),因此我建议每个人都使用ADB,因为它是跨平台的。一个简短的答案,而不是详细地获得所有权限:
dumpsys
appops
allow
deny
ignore
default
false
true
ADB
adb shell pm list permissions
adb shell cmd appops get <package>
adb shell dumpsys <package>
grant
revoke
4条答案
按热度按时间pxq42qpu1#
我只想把Jason和Juuso的答案结合起来,注意前者列出了 granted 的权限,而后者列出了 requested 的权限(包括已授予的权限)。
要查看 * 仅授予的权限 *(但忽略已请求但未授予的权限),请使用
并检查输出底部的
grantedPermissions
部分。列出 * 所有权限 *(已请求但未授予+已请求但已授予):
1.注意软件包的APK。您可以运行相同的命令
并从其输出的
codePath
元素获取APK路径。1.(如果您的设备/模拟器上没有
aapt
)您需要从设备/模拟器中提取apk,正如Juuso Ohtonen在他的回答中指出的那样。1.列出包的所有权限
如果设备/模拟器中缺少
aapt
,可以在Android SDK中的build-tools/<version>/
下找到。然后执行
iaqfqrcu2#
最快的方法:adb shell转储程序包程序包名|grep权限
kq0g1dla3#
1.列出所有应用程序及其安装路径(如果您只对第三方应用程序感兴趣,请使用
-3
标记)。作为示例,让我们尝试找出YouTube应用程序权限。adb shell pm list packages -f
输出:
...
package:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube
...
1.从设备中拉出选定的APK:
adb pull /data/app/com.google.android.youtube-1.apk
1.列出权限
aapt d permissions com.google.android.youtube-1.apk
输出:
...
n3h0vuf24#
dumpsys
不会给予你所有权限。获取所有默认Android权限的方法是使用dumpsys
i.c.w.appops
。有不同种类的权限;例如,一个接受allow
、deny
、ignore
、default
,而另一个只接受false
和true
。aapt
并非在所有系统上都可用(尽管我非常喜欢它),因此我建议每个人都使用ADB
,因为它是跨平台的。一个简短的答案,而不是详细地获得所有权限:
adb shell pm list permissions
列出随已安装应用程序(false
或true
)提供的权限adb shell cmd appops get <package>
列出每个应用程序的用户级别权限(allow
、deny
、ignore
)adb shell dumpsys <package>
列出了系统级别上每个应用程序的权限(grant
和revoke
)