ADB 无法在 Android 11 上启动 IMAGE_CAPTURE 意图 activity
ADB unable to start IMAGE_CAPTURE intent activity on Android 11
以下 ADB 命令不适用于 Android 11 个设备
adb -d shell "am start -a android.media.action.IMAGE_CAPTURE" -W
结果
Starting: Intent { act=android.media.action.IMAGE_CAPTURE }
Error: Activity not started, unknown error code 102
好像跟Android11的变化有关,看这里说的解决方法是在manifest里加上这个
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
ADB 中是否有与此等效的内容?
这似乎是 Android 中的错误。相机 activity 启动不会因为您链接到的问题而失败,而是因为 AppOpsManager
服务拒绝:
05-04 14:16:51.789 620 2669 W ActivityTaskManager: Appop Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x10000000 cmp=com.android.camera2/com.android.camera.CaptureActivity } from null (pid=4079, uid=2000) requires android:camera
这可以通过
验证
adb shell appops get com.android.shell
其中 com.android.shell
是由命令行实用程序提供的包名称,例如 am
即 Android Shell 包。这产生
Uid mode: COARSE_LOCATION: foreground
LEGACY_STORAGE: ignore
CAMERA: allow; rejectTime=+4m37s345ms ago
显示 Shell 包导致 CAMERA
操作被拒绝的时间。
但是这种拒绝策略是不正确的,因为 com.android.shell
已经拥有可以通过
验证的 CAMERA
权限
adb shell dumpsys package com.android.shell|grep 'android.permission.CAMERA'
android.permission.CAMERA
android.permission.CAMERA: granted=true, flags=[ SYSTEM_FIXED|GRANTED_BY_DEFAULT]
一种替代方法(可能不适用于所有人)是从有效的根 shell(在 adb root
/su
之后)开始此意图。
05-04 14:17:23.610 502 2518 I CameraService: CameraService::connect call (PID -1 "com.android.camera2", camera ID 0) for HAL version default and Camera API version 2
以下 ADB 命令不适用于 Android 11 个设备
adb -d shell "am start -a android.media.action.IMAGE_CAPTURE" -W
结果
Starting: Intent { act=android.media.action.IMAGE_CAPTURE }
Error: Activity not started, unknown error code 102
好像跟Android11的变化有关,看
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
ADB 中是否有与此等效的内容?
这似乎是 Android 中的错误。相机 activity 启动不会因为您链接到的问题而失败,而是因为 AppOpsManager
服务拒绝:
05-04 14:16:51.789 620 2669 W ActivityTaskManager: Appop Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x10000000 cmp=com.android.camera2/com.android.camera.CaptureActivity } from null (pid=4079, uid=2000) requires android:camera
这可以通过
验证adb shell appops get com.android.shell
其中 com.android.shell
是由命令行实用程序提供的包名称,例如 am
即 Android Shell 包。这产生
Uid mode: COARSE_LOCATION: foreground
LEGACY_STORAGE: ignore
CAMERA: allow; rejectTime=+4m37s345ms ago
显示 Shell 包导致 CAMERA
操作被拒绝的时间。
但是这种拒绝策略是不正确的,因为 com.android.shell
已经拥有可以通过
CAMERA
权限
adb shell dumpsys package com.android.shell|grep 'android.permission.CAMERA'
android.permission.CAMERA
android.permission.CAMERA: granted=true, flags=[ SYSTEM_FIXED|GRANTED_BY_DEFAULT]
一种替代方法(可能不适用于所有人)是从有效的根 shell(在 adb root
/su
之后)开始此意图。
05-04 14:17:23.610 502 2518 I CameraService: CameraService::connect call (PID -1 "com.android.camera2", camera ID 0) for HAL version default and Camera API version 2