@@ -33,7 +33,6 @@ import androidx.activity.result.contract.ActivityResultContracts
3333import androidx.appcompat.app.AppCompatActivity
3434import androidx.core.app.ActivityCompat
3535import androidx.core.content.ContextCompat
36- import androidx.core.net.toUri
3736import androidx.core.view.WindowInsetsCompat
3837import androidx.documentfile.provider.DocumentFile
3938import androidx.lifecycle.lifecycleScope
@@ -50,8 +49,6 @@ import kotlinx.coroutines.launch
5049import kotlinx.coroutines.withContext
5150import java.io.File
5251import java.sql.Types
53- import java.util.logging.Level
54- import java.util.logging.Logger
5552import kotlin.system.exitProcess
5653import com.google.android.material.R as MDC_R
5754
@@ -446,7 +443,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener,
446443 )
447444 }
448445 } catch (e: Exception ) {
449- Logger .getLogger (" MG" ).log( Level . WARNING , " 移除 SAF 权限失败" , e)
446+ Log .w (" MG" , " 移除 SAF 权限失败" , e)
450447 }
451448 }
452449
@@ -570,11 +567,20 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener,
570567 )
571568 .setPositiveButton(R .string.dialog_positive) { _, _ ->
572569 val intent = Intent (Intent .ACTION_OPEN_DOCUMENT_TREE )
573- // EXTRA_INITIAL_URI 是可选的,但可以改善用户体验
574- intent.putExtra(
575- DocumentsContract .EXTRA_INITIAL_URI ,
576- (Environment .getExternalStorageDirectory().toString() + " /MG" ).toUri()
577- )
570+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O ) {
571+ // 1. 获取外部存储文档提供者的根 URI
572+ val rootUri = DocumentsContract .buildTreeDocumentUri(
573+ " com.android.externalstorage.documents" ,
574+ " primary" // "primary" 通常代表内部共享存储
575+ )
576+
577+ // 2. 在根 URI 的基础上构建指向 "MG" 文件夹的 Document-URI
578+ // Document ID 的格式是 "root:path"
579+ val folderDocumentId = " primary:MG"
580+ val initialUri = DocumentsContract .buildDocumentUriUsingTree(rootUri, folderDocumentId)
581+
582+ intent.putExtra(DocumentsContract .EXTRA_INITIAL_URI , initialUri)
583+ }
578584 safLauncher.launch(intent)
579585 }
580586 .setNegativeButton(R .string.dialog_negative) { dialog, _ -> dialog.dismiss() }
0 commit comments