android |
您所在的位置:网站首页 › 华为OPEN_DOCUMENT_TREE › android |
我在我的应用程序(在 Android 5+ 中)中实现“选择保存目录”(对于所有文件)功能时遇到了问题。我需要的是一个目录选择器——所以我决定使用系统选择器——发送 Intent ACTION_OPEN_DOCUMENT_TREE。我已经完成的是实现与稍后处理 uri 相关的所有内容,同时保存文件(创建 DocumentFile,创建适当的 Stream,甚至获得稍后使用的正确路径)。我无法实现的是保存我收到的 URI(例如在 SharedPreferences 中)以使其更永久,因为它使应用程序设置之一,用户必须设置一次。 这就是我尝试保存和恢复我的 uri 的方式: private Uri getSaveTreeUri() { if (mSaveTreeUri == null) { String uriString = PreferenceManager.getDefaultSharedPreferences(this).getString(SAVE_TREE_URI, null); if (uriString != null) mSaveTreeUri = Uri.parse(uriString); } return mSaveTreeUri; } private void setSaveTreeUri(Uri saveTreeUri) { mSaveTreeUri = saveTreeUri; SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); editor.putString(SAVE_TREE_URI, saveTreeUri.toString()).commit(); }然后当我使用它时,通过 DocumentFile documentFileDir = DocumentFile.fromTreeUri(this, getSaveTreeUri());我明白了 java.lang.IllegalArgumentException: Invalid URI: /tree/D428-E753:Music有没有可能使这项工作?非常感谢所有帮助! 最佳答案 ACTION_OPEN_DOCUMENT_TREE 返回具有关联权限的树 Uri。如果您想在以后的 session 中重新访问 Uri,则必须保留权限。 使用takePersistableUriPermission保留权限。 使用getPersistedUriPermissions获取持久化 Uris 的列表。 关于android - ACTION_OPEN_DOCUMENT_TREE 和 uri 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157765/ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |