gpt4 book ai didi

android - 如何更好地控制 Android SAF UI(例如 ACTION_OPEN_DOCUMENT)?

转载 作者:行者123 更新时间:2023-11-29 00:56:37 24 4
gpt4 key购买 nike

我希望 SAF“在指定文档中启动导航器,如果它是一个文件夹”(他们在文档中这样调用它)。

这不起作用,所以我也想知道我是否可以将存储快捷方式添加到 SAF UI。请参阅此链接中的图片: https://i.imgur.com/yGtcGMM.jpg

但我认为在特定文件夹中启动 SAF UI 的可能性更大,所以我暂时可能会采用这种方法。我已经在 onCreate(...) 方法中试过了:

String pathAsString = Environment.getExternalStorageDirectory() + "/myscientificapp/measurements/";
File pathAsFile = new File(pathAsString);

if (pathAsFile.exists()) { Log.d(TAG, "pathAsFile exists!"); } //This is printed in Logcat

android.net.Uri pathAsUri = Uri.fromFile(pathAsFile);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pathAsUri); //Does not make effect
startActivityForResult(intent, REQUEST_OPEN_DOCUMENT);

问题是它不起作用.. 或者我不知道该怎么做。 :/

我已经阅读了一些关于这些地方的信息。例如在 Medium.com开发人员说:

When selecting a location to save a file using ACTION_CREATE_DOCUMENT or when opening a document, the new EXTRA_INITIAL_URI allows you to override the default initial location (the last location the user selected) with your own custom starting location.

在 Android 文档中我们可以读到这个 ​​EXTRA_INITIAL_URI :

Callers can set a document URI through DocumentsContract#EXTRA_INITIAL_URI to indicate the initial location of documents navigator. System will do its best to launch the navigator in the specified document if it's a folder, or the folder that contains the specified document if not.

我们也可以在 DocumentsContract#EXTRA_INITIAL_URI 上阅读它。 :

EXTRA_INITIAL_URI

...
Sets the desired initial location visible to user when file chooser is shown.
...
Location should specify a document URI or a tree URI with document ID. If this URI identifies a non-directory, document navigator will attempt to use the parent of the document as the initial location.

The initial location is system specific if this extra is missing or document navigator failed to locate the desired initial location.

高度抽象语言的所有荣耀,但我想至少了解一些有关如何使用此功能的详细信息。

但是在 Stackoverflow 上,一些开发人员告诉我们 it will not work .

还有一些threads are not really answered yet .

所以根据一些消息来源,它应该可以工作。

知道如何在 SAF UI 中创建快捷方式的人(见图片)?或者如何使用例如 ACTION_CREATE_DOCUMENT 使 SAF“在指定文档中启动导航器(如果它是一个文件夹)”? (如果我没记错的话,例如 Windows 95 中就存在这些功能 :> )

编辑:正如@A Jar of Clay 所暗示的那样,我删除了一些指向 git-project 的链接,因为最终“链接失效”。

我也尝试将树 Uri(如@CommonsWare 推荐的那样)从 ACTION_OPEN_DOCUMENT_TREE 传递到方法 intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pathAsTreeUri); 。但是 SAF 并没有从我作为 Uri 传递的位置开始。 :(

最佳答案

answer Alex Baker 为我工作,我认为它也适用于你。

DocumentFile file = DocumentFile.fromTreeUri(context, uri);
intent.putExtra(EXTRA_INITIAL_URI, file.getUri());

您从 ACTION_OPEN_DOCUMENT_TREE 获得的 resultData.getData() 是您在 fromTreeUri() 中开始的 uri。

看起来像“位置应该指定文档 URI 或带有文档 ID 的树 URI”。 “带有文档ID”似乎是必不可少的。我可以直接使用 ACTION_OPEN_DOCUMENT 中的 resultData.getData() 并且它有效。直接将 resultData.getData 与 ACTION_OPEN_DOCUMENT_TREE 结合使用不起作用,但在上述过程之后起作用。

无论如何,对我有用,希望对你也有用。

关于android - 如何更好地控制 Android SAF UI(例如 ACTION_OPEN_DOCUMENT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54257922/

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