写入检测上下文内部文件夹时出现权限被拒绝异常

Cru*_*ces 5 android android-instrumentation

我创建了一个函数,将文件从资产复制到我的仪器测试中的内部路径。

fun copyFileFromAssetsToInternal(context: Context, fis: FileInputStream) {
        File(context.filesDir, file).outputStream().use { fos ->
            var read: Int
            val buffer = ByteArray(1024)
            do {
                read = fis.read(buffer)
                if (read == -1) break
                fos.write(buffer, 0, read)
            } while (read > 0)
        }
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序的包是 gr.example.myapp

当我使用InstrumentationRegistry.getInstrumentation().targetContext上述工作正常但它写入/data/user/0/gr.example.myapp/files/

但是当我使用InstrumentationRegistry.getInstrumentation().context上面的尝试写入 /data/user/0/gr.example.myapp.test/files/ (我已经检查过并且它确实存在)并失败时,出现以下异常:

java.io.FileNotFoundException: /data/user/0/gr.example.myapp.test/files/test.zip (Permission denied)
Run Code Online (Sandbox Code Playgroud)

我已经添加了

@get:Rule
    val rule = GrantPermissionRule.grant(permission.WRITE_EXTERNAL_STORAGE, permission.READ_EXTERNAL_STORAGE)
Run Code Online (Sandbox Code Playgroud)

到我的测试文件的顶部,我仍然收到错误

有什么我可以做的吗?因为我真的不想用测试数据污染我的实际应用程序的内部数据