使用Detox在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
  • React Native:0.60.4
  • 节点:12.16.1
  • 操作系统:macOS Mojave 10.14.6
  • 设备:模拟器Nexus S API 27

我的Android模拟器在Detox 17.2.0、React Native 0.61、API 27上也有这个问题。它在iOS上运行得很好,但在Android上,无论我在权限上设置NOYES,它们总是启用的。

如果我在启动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

最新更新