相关疑难解决方法(0)

Android:如何通过Intent打开特定文件夹并在文件浏览器中显示其内容?

我认为这很容易但事实证明不幸的是.

是)我有的:

我的外部存储器上有一个名为"myFolder"的文件夹(不是SD卡,因为它是Nexus 4,但这应该不是问题).该文件夹包含一些*.csv文件.

我想要的是:

我想写一个方法,它执行以下操作:显示各种应用程序(文件浏览器),我可以从中选择一个(见图片).单击它后,所选的文件浏览器应该启动并显示"myFolder"的内容.不多也不少.

在此输入图像描述

我的问题:

我到底该怎么做?我想我接下来的代码非常接近,但无论我做什么 - 而且我确定必须有一些我还没有做到的事情 - 它始终只打开来自外部存储器的主文件夹.

public void openFolder()
{
File file = new File(Environment.getExternalStorageDirectory(),
    "myFolder");

Log.d("path", file.toString());

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(Uri.fromFile(file), "*/*");
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

directory android android-intent android-sdcard

63
推荐指数
2
解决办法
11万
查看次数

设置初始位置中的 ACTION_OPEN_DOCUMENT_TREE 错误

Android API 21 引入了名为 SAF(存储访问框架)的新框架,用于接收对存储的访问。在 API 30 之后,这是您的应用程序访问外部存储的唯一可能的解决方案。

当使用 ACTION_OPEN_DOCUMENT_TREE 意图时,我在该框架中遇到了 2 个错误(?)。

  1. 用户向应用程序授予对所需文件夹的访问权限后,如果 Uri 成为此意图的所有下一次调用的初始位置,则完全忽略 DocumentsContract.EXTRA_INITIAL_URI。
  2. 对于此意图的所有后续调用中的初始文件夹,“使用此文件夹”按钮均被隐藏。要选择相同的文件夹,用户需要转到父目录,然后返回,只有在这种情况下才会出现按钮。

有人有同样的问题吗?

我的代码:

 public void openDirectory() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
    intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, "content://com.android.externalstorage.documents/tree/2C13-1335%3AMusic");
    startActivityForResult(intent, FOLDER_ACCESS_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == FOLDER_ACCESS_REQUEST_CODE && resultCode == RESULT_OK) {           
        if (data != null) {
            Uri uri = data.getData();  // there i receive uri of selected folder, it is "content://com.android.externalstorage.documents/tree/2C13-1335%3AMusic"
            getContentResolver().takePersistableUriPermission(uri,
                    Intent.FLAG_GRANT_READ_URI_PERMISSION | …
Run Code Online (Sandbox Code Playgroud)

android

5
推荐指数
0
解决办法
859
查看次数

什么是 com.android.externalstorage?

尽管这是一个简单的问题,但我无法在googlestackoverflow上找到答案。

当我使用以下代码时,我得到这个结果//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);
Run Code Online (Sandbox Code Playgroud)

你能帮我理解我的结果的各个部分吗?

android xamarin.android android-file xamarin

2
推荐指数
1
解决办法
2万
查看次数