作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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/
我是一名优秀的程序员,十分优秀!