在Android 11中,由于作用域存储执行,requestLegacyExternalStorage标志将不再适用于访问外部存储中的文件。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在清单文件中声明了该权限,并且用户在运行时授予了该权限,以下代码曾经能够读取文件,但在Android 11中将无法读取/sdcard/Documents/my_confi_file.json
文件。
try {
var fileContent = ""
val file = File("/sdcard/Documents/my_confi_file.json")
val fileInputStream = FileInputStream(file)
val size = fileInputStream.available()
val buffer = ByteArray(size)
fileInputStream.read(buffer)
fileContent = String(buffer, Charset.forName("UTF-8"))
fileInputStream.close()
} catch (e: IOException) {
e.printStackTrace()
}
在Android 11中,是否仍然可以从此目录(/sdcard/Documents/)读取文件,如何操作?
使用情况是设备和应用程序不是公共的,并且没有用户隐私问题。设备和应用程序的所有者希望将文件上传到设备上的此目录(/sdcard/Documents/),并且应用程序将从该文件中读取内容。