首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android打开通过ACTION_CREATE_DOCUMENT获得的uri目录。

Android打开通过ACTION_CREATE_DOCUMENT获得的uri目录。
EN

Stack Overflow用户
提问于 2022-08-16 23:14:26
回答 2查看 52关注 0票数 0

我使用Android ACTION_CREATE_DOCUMENT来选择保存PDF文件的位置。在获得uri并写入文件(如下面的代码所做的)之后,我希望显示一个Snackbar,其操作设置为打开文件的位置。

为了明确起见,我不想打开文件本身,而是帮助用户使用文件资源管理器应用程序定位文件。是否有"developer.android.com“推荐的方法来做到这一点?当前代码如下所示。

代码语言:javascript
运行
复制
private void getSaveLocation() {
    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("application/pdf");
    intent.putExtra(Intent.EXTRA_TITLE, "MyFile.pdf");
    startActivityForResult(intent, MY_CODE);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != Activity.RESULT_OK || data == null || data.getData() == null) return;

    Uri uri = data.getData();
    OutputStream out = getContext().getContentResolver().openOutputStream(uri);
    // write the pdf to out

    try {
        out.close();
        showSnackbar(uri);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

void showSnackbar(Uri uri) {
    Snackbar snackbar = Snackbar.make(getView(), "Saved to MyFile.pdf", Snackbar.LENGTH_LONG);
    snackbar.setAction("Locate file", new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            // NEED TO SETUP THE INTENT CORRECTLY USING uri
            activity.startActivity(intent);
        }
    });
    snackbar.show();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-16 23:39:50

是否有一种"developer.android.com“推荐的方法来做到这一点?

不是的。

首先,没有标准的“在特定位置打开文件资源管理器”Intent操作。

其次,不需要使用ACTION_OPEN_DOCUMENT来打开一个文档,该文档是可以探索的内容的一部分。用户可以使用它来访问其他内容(加密的容器、云存储等)中的文档。这不一定是文件管理器可以访问的。

票数 1
EN

Stack Overflow用户

发布于 2022-08-17 05:08:41

如果您使用uri,ACTION_CREATE_DOCUMENT会为您提供文件的uri和该文件的读写权限。

即使您能够为父目录解码uri,也无法使用uri作为读写权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73381273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档