如何在 Android 11 及更高版本上使用存储访问框架打开文档文件夹?
How to open Documents folder using Storage Access Framework on Android 11 and higher?
此问题仅涉及 Android 11 岁及以上。
阅读 https://developer.android.com/guide/topics/providers/document-provider 上的 Android 存储框架,我可以让我的应用程序在我的应用程序的 public Downloads
目录中创建一个文件。
执行以下操作会为我打开 Downloads
位置,我可以保存文件。
private static final int WRITE_REQUEST_CODE = 101;
Intent i = new Intent(Intent.ACTION_CREATE_DOCUMENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TITLE, "someFile.txt");
startActivityForResult(i, WRITE_REQUEST_CODE);
以上效果很好!但是,当我希望我的应用程序打开 Documents
文件夹而不是 Downloads
时,这种技术是否太不一样了?当系统对话框打开时,如何让我的应用程序打开 Android 11 phone 上的 Documents
文件夹并能够将文件保存在那里?
请注意,目的是在 Android 设备的文档文件夹中创建文档。
Doing the following opens the Downloads location for me
不一定。没有保证的“入口点”,您不应假设任何特定位置。
How can I make my app open Documents folder on an Android 11 phone when the system dialog opens
除非您之前从 ACTION_OPEN_DOCUMENT_TREE
/ActivityResultContracts.OpenDocumentTree
获得 Documents/
的 Uri
,否则您无法做到这一点。
但是请注意,用户可以通过您的代码打开的 UI 转到 Documents/
或他们选择的任何其他树。不幸的是,UI 对于新手来说不是很直观。
此问题仅涉及 Android 11 岁及以上。
阅读 https://developer.android.com/guide/topics/providers/document-provider 上的 Android 存储框架,我可以让我的应用程序在我的应用程序的 public Downloads
目录中创建一个文件。
执行以下操作会为我打开 Downloads
位置,我可以保存文件。
private static final int WRITE_REQUEST_CODE = 101;
Intent i = new Intent(Intent.ACTION_CREATE_DOCUMENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TITLE, "someFile.txt");
startActivityForResult(i, WRITE_REQUEST_CODE);
以上效果很好!但是,当我希望我的应用程序打开 Documents
文件夹而不是 Downloads
时,这种技术是否太不一样了?当系统对话框打开时,如何让我的应用程序打开 Android 11 phone 上的 Documents
文件夹并能够将文件保存在那里?
请注意,目的是在 Android 设备的文档文件夹中创建文档。
Doing the following opens the Downloads location for me
不一定。没有保证的“入口点”,您不应假设任何特定位置。
How can I make my app open Documents folder on an Android 11 phone when the system dialog opens
除非您之前从 ACTION_OPEN_DOCUMENT_TREE
/ActivityResultContracts.OpenDocumentTree
获得 Documents/
的 Uri
,否则您无法做到这一点。
但是请注意,用户可以通过您的代码打开的 UI 转到 Documents/
或他们选择的任何其他树。不幸的是,UI 对于新手来说不是很直观。