尽管这是一个简单的问题,但我找不到答案 or 堆栈溢出 https://i.stack.imgur.com/58Zv7.png.
当我使用以下代码时,我得到这个结果//com.android.externalstorage.documents/tree/primary:Podcasts
var intent = new Intent(Intent.ActionOpenDocumentTree);
intent.PutExtra("android.content.extra.SHOW_ADVANCED", true);
intent.PutExtra("android.content.extra.FANCY", true);
intent.PutExtra("android.content.extra.SHOW_FILESIZE", true);
你能帮我理解我的结果的各个部分吗?
Android 存储如何工作?
为了确保 Android 应用程序之间的安全,Android 不允许您直接访问存储系统中的每个文件。他们有一种东西叫做ContentProvider
.
将此内容提供商视为服务员,您的应用程序可以请求某个文件/文件夹(通过 Content Uri)。
内容 Uri 将如下所示:content://[Authority]/[path]/[id]
只是 Content Uri 的一个示例。com.android.externalstorage.documents
是权限的一个示例(用于访问外部存储提供商)。
因此,就您而言,您的 Uri 将使您能够访问外部存储中的播客目录。
通过使用 Uri,您可以轻松地在应用程序或服务提供商之间进行通信,而无需每次询问或提供时都传递真实文件。只需传递一个轻量级的简单 Uri 即可。
你的代码中发生了什么?
如果您想知道代码中发生了什么,请尝试查看参考 https://developer.android.com/reference/android/content/Intent.html#ACTION_OPEN_DOCUMENT_TREE.
It says:
允许用户选择目录子树。调用时,系统会显示各种DocumentsProvider
安装在设备上的实例,让用户可以浏览它们。应用程序可以完全管理返回目录中的文档。
我不确定您想要实现什么目标(如果可以,请澄清,以便我可以提供帮助),但我希望我的答案包含足够的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)