使用 Detox 在 Android 上设置相机权限
Posted
技术标签:
【中文标题】使用 Detox 在 Android 上设置相机权限【英文标题】:Setting camera permissions on Android using Detox 【发布时间】:2020-10-30 11:12:28 【问题描述】:说明
我正在测试一个可以访问相机以获取照片的屏幕。但我无法处理 android 测试中的权限对话框。
我使用await device.launchApp( permissions: camera: 'YES' );
运行测试。此设置适用于 ios。如何接受 Android 的所有权限?或者如何处理 Android 上的权限对话框?
复制
init.js 设置
await device.launchApp(
permissions: photos: 'YES', camera: 'YES' ,
);
模拟器设置
"configurations":
"android.emu.debug":
"binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
"build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
"type": "android.emulator",
"device":
"avdName": "Nexus_S_API_27"
环境
排毒:16.2.1 反应原生:0.60.4 节点:12.16.1 操作系统:macOS Mojave 10.14.6 设备:模拟器 Nexus S API 27【问题讨论】:
【参考方案1】:我的 Android 模拟器的 Detox 17.2.0、React Native 0.61、API 27 也有这个问题。它在 iOS 上完美运行,但在 Android 上,无论我设置 NO
或 YES
权限,它们始终处于启用状态。
如果我在启动detox test
之前更改应用程序的这些权限,所有权限都会再次启用。
我的测试如下所示:
describe('Permissions', () =>
beforeEach(async () =>
await device.reloadReactNative()
)
it('displays no warning when camera and microphone access are authorized', async () =>
await device.launchApp( newInstance: true, permissions: camera: 'YES', microphone: 'YES' )
...
)
it('displays a warning message + button to app settings when camera access is denied', async () =>
await device.launchApp( newInstance: true, permissions: camera: 'NO', microphone: 'YES' )
...
)
)
Detox 暂时无法处理这个问题我猜如果你检查这个问题https://github.com/wix/Detox/issues/2184
【讨论】:
以上是关于使用 Detox 在 Android 上设置相机权限的主要内容,如果未能解决你的问题,请参考以下文章
Detox - Android / iOS - 无法在 android 上运行相同的测试
Bitrise 上的 Detox 无法在 Android 上运行 - React Native
在使用 Detox 运行测试期间,Android 模拟器无法启动应用程序