使用Intent打开特定文件夹

8
我想使用Intent打开特定路径文件夹,我使用了文件浏览器的代码,它在大多数设备上都能工作得很好,但在某些设备上(比如三星设备)如果没有文件浏览器应用程序,则无法打开特定路径文件夹。我尝试了许多解决方案,但对我来说都不起作用。
Uri uri = Uri.fromFile(new File(new File(filePath).getParent()));
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "resource/folder");


        if (intent.resolveActivityInfo(getPackageManager(), 0) != null)
        {
            startActivity(intent);
        }
        else {

           Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
           intent.setDataAndType(uri, "file/*");
           startActivity(Intent.createChooser(intent, "Open folder"));

        }

1
尝试一下这个 https://dev59.com/8WQn5IYBdhLWcg3wAjPJ - Nabin Khatiwada
2
我尝试过这个,但它也会打开文件管理器,而不是跳转到特定的文件夹。 - Nik
你找到任何解决方案了吗? - Farooq Arshed
@FarooqArshed 还没有。 - Nik
2个回答

2
这里是我在Kotlin中访问“root/Downloads/Sam”的解决方案。
val rootPath = "content://com.android.externalstorage.documents/document/primary:"
val samPath = Uri.parse("$rootPath${Environment.DIRECTORY_DOWNLOADS}%2fSam")    //"%2f" represents "/"

val REQUEST_CODE_PICK_FILE = 1

main_sam_button.setOnClickListener {
    val intent = Intent(Intent.ACTION_GET_CONTENT)                                  

    intent.type = "text/plain"    //specify file type
    intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, samPath)    //set the default folder

    startActivityForResult(intent, REQUEST_CODE_PICK_FILE)
}

示例: https://youtu.be/lUIPyC_8q_M


有用的阅读材料:


在互联网上所有可用的解决方案中,这个解决方案对我有效。是的,根路径将我导航到内部存储。已测试 Android 11。 - Rohit Singh

1
        val intent = Intent(Intent.ACTION_GET_CONTENT)
        intent.setDataAndType(
            Uri.parse(
                (Environment.getExternalStorageDirectory().path
                        + java.io.File.separator) + "myFile" + java.io.File.separator
            ), "*/*"
        )
        intent.addFlags(
            Intent.FLAG_GRANT_READ_URI_PERMISSION
                    and Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                    and Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
                    and Intent.FLAG_GRANT_PREFIX_URI_PERMISSION
        )
        intent.addCategory(Intent.CATEGORY_OPENABLE)
        startActivityForResult(intent, WRITE_ACCESS_CODE)

1
getExternalStorageDirectory()已被弃用。 - Sam Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接