假设我们有一个名为NoseBook
的应用,该应用没有android.permission.WRITE_EXTERNAL_STORAGE
的许可,并且我们无意向用户请求此许可。
uiautomator2
是选定的黑盒测试框架,我们正尝试在测试过程中捕获屏幕截图并将其保存在某处,以后可以将其从AVD中提取并保存为报告。
调用的API是UiDevice#takescreenshot,但显示了以下错误
E/UiDevice: failed to save screen shot to file
java.io.FileNotFoundException: /storage/emulated/0/test.png (Permission denied)
如果我们将WRITE_EXTERNAL_STORAGE
添加到应用NoseBook
中,错误将消失,但这是不合适的,因为这仅出于测试目的,实际的应用不需要该许可。 / p>
注意:屏幕截图是我注意到的解决方法,但我正在寻找围绕uiautomator
本身的解决方案。
环境:仿真器API 25
答案 0 :(得分:0)
您可以授予这样的权限规则
@RunWith(AndroidJUnit4::class)
abstract class UiAutomatorRunner {
lateinit var context: Context
@Rule
@JvmField
var grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)