Filepicker
包,但它在某些设备中有效,但在某些设备中无效(也可以在清单文件中使用包括存储管理的权限)。我尝试使用
kotlin
创建一个简单的平台本机代码,并使用获取用户选择的路径
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_FOLDER_PICKER && resultCode == RESULT_OK) {
data?.data?.let { uri ->
contentResolver.takePersistableUriPermission(
uri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
// Convert the URI to a file path
val folderPath = getAbsolutePathFromUri(uri) ?: ""
// Send the folder path back to the Flutter side
pendingResult?.success(folderPath)
pendingResult = null
}
} else {
// If the user cancels the folder picker, send an empty string back
pendingResult?.success("")
pendingResult = null
}
}
但它以“树/下载”形式返回值,这也不起作用,我也将此路径格式化为/storage/emulated/0/Downloads
,它仍然会引起权限被拒绝错误。所以,我想知道你们中是否有人知道如何以更好的方式访问存储系统,这种方式可以在大多数 Android 设备上工作并且非常有预测性。 (不仅仅是随机的,有时有效,有时无效。)