[英]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.