gpt4 book ai didi

android - 如何将 Espresso 的 Intent 与 DocumentsProvider 结果结合使用

转载 作者:行者123 更新时间:2023-12-02 10:33:49 24 4
gpt4 key购买 nike

我的 Activity 需要向文档提供者请求新文档。

我想在我的 Espresso 测试中通过使用 uri 指定 Activity 结果来测试这一点。但是,返回的 uri 没有授予正确的权限。当我尝试 takePersistableUriPermission

时,至少我得到了一个 SecurityException: No persistable Permission Grants found for [user] and [uri]

onActivityResult中我的activity的相关代码:

val takeFlags = data.getFlags() and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
contentResolver.takePersistableUriPermission(it, takeFlags)

espresso测试的相关代码

val file = File(InstrumentationRegistry.getTargetContext().filesDir, "abc.txt2)
val uri = Uri.parse("file://" + file.absoluteFile)
Intents.intending(hasAction(Intent.ACTION_CREATE_DOCUMENT))
.respondWith(Instrumentation.ActivityResult(RESULT_OK, Intent().setData(uri)))
<click on button to request document>

如何使用具有授予权限的 uri 来 Intent Activity 结果?

最佳答案

使用

val uri = Uri.fromFile(file)

相反

val uri = Uri.parse("file://" + file.absoluteFile)

不要忘记提供许可

@get:Rule
var permissionRule: GrantPermissionRule = GrantPermissionRule.grant(
android.Manifest.permission.READ_EXTERNAL_STORAGE
)

它适用于我的情况

关于android - 如何将 Espresso 的 Intent 与 DocumentsProvider 结果结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49101100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com