[英]How to open a directory from intent in android?
我试图借助向用户显示该文件夹内的内容的意图打开一个目录,但我无法这样做,但我不知道为什么该文件夹不会打开,我得到了这个“无法使用此文件夹”在文件管理器中。
open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/" + "XYZ";
Uri uri = Uri.parse(path);
Toast.makeText(MainActivity.this, ""+path, Toast.LENGTH_SHORT).show();
openDirectory(uri);
}
});
方法
public void openDirectory(Uri uriToLoad){
// Choose a directory using the system's file picker.
int result = 1;
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
// Optionally, specify a URI for the directory that should be opened in
// the system file picker when it loads.
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uriToLoad);
startActivityForResult(intent, result);
}
我想在点击按钮后打开文件夹 XYZ
我正在尝试借助向用户显示该文件夹内的内容的意图打开一个目录
抱歉,没有标准的Intent
操作。 您的代码试图让用户 select 成为文档树。
它也这样做不正确,因为EXTRA_INITIAL_URI
没有将file://
Uri
作为值。 这需要是您之前从存储访问框架获得的一些Uri
,例如通过一些过去的ACTION_OPEN_DOCUMENT_TREE
请求。
我不知道为什么文件夹打不开,我在文件管理器上看到“无法使用这个文件夹”
从 Android 的角度来看,您的EXTRA_INITIAL_URI
值比随机字符串好一点。
但用户不会知道 XYZ 文件夹的实际位置
那么也许你应该让用户首先选择位置,而不是强制一个特定的位置。 例如,您可以使用ACTION_CREATE_DOCUMENT
让用户决定将文档放在用户设备上的哪个位置(或用户的云存储、用户的网络文件服务器等)。
据我所知,使用 Intent 您可以浏览、打开和创建文件,这些文件由系统为所有应用程序共享。 在这种情况下,要打开获取文件路径,您可以使用如下代码(请原谅我的 Kotlin):
private var launcherForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
result.data.also { uri -> filePath = uri.toString() }
}
}
private fun getFilePath() {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
type = "*/*"
addCategory(Intent.CATEGORY_OPENABLE)
}
launcherForResult.launch(intent)
}
至于目录,它通常会打开之前打开的最后一个目录。
如果您不希望其他应用程序看到您的文件,请将它们存储在应用程序的私有目录中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.