gpt4 book ai didi

android - READ_EXTERNAL_STORAGE 不适用于 Android 10

转载 作者:行者123 更新时间:2023-12-02 12:19:03 27 4
gpt4 key购买 nike

我正在尝试将照片发送到服务器,但我无法仅在 Android 10 上访问该照片。发出 READ_EXTERNAL_STORAGE 请求,单击“允许”,在设置中,允许访问存储。
list

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
fragment
private fun haveStoragePermission() =
ActivityCompat.checkSelfPermission(requireActivity(), Manifest
.permission.READ_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED

private fun requestPermission() {
if (!haveStoragePermission()) {
val permissions = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE
)
ActivityCompat.requestPermissions(requireActivity(), permissions, STORAGE_REQUEST_PERMISSION)
}
}
文件的路径显示在日志中。这是绝对的,比如 file:///emulated/0/...photo.jpg ,这很方便,因为您可以立即将其上传到服务器,但是毕加索和服务器不接受照片,或者似乎不允许读取(毕加索由于错误而显示占位符)。此代码仅在您添加 requestLegacyExternalStorage 时有效到 list 。然后一切正常,但这个属性在 Android 11 中消失了。我不知道为什么 10 Android 不能正常工作,尽管在 7、8、6 上使用测试设备一切正常。
//Get images code
private fun getAllShownImagesPath(activity: Activity): ArrayList<String> {
val listOfAllImages = ArrayList<String>()
val uri: Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(
MediaColumns.DATA,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME
)
val cursor = activity.contentResolver.query(
uri, projection, null,
null,"${MediaStore.Images.Media.DATE_TAKEN} DESC"
)
val columnIndexData = cursor!!.getColumnIndexOrThrow(MediaColumns.DATA)
while (cursor.moveToNext()) {
val absolutePathOfImage = cursor.getString(columnIndexData)
listOfAllImages.add("file://$absolutePathOfImage")
}
return listOfAllImages
}

最佳答案

This code only works if you add requestLegacyExternalStorage to the manifest.


所以,添加 android:requestLegacyExternalStorage="true"<application> list 中的元素。

Then everything works fine at once , but this attribute disappear in Android 11


在 Android 11+ 中,在很大程度上, READ_EXTERNAL_STORAGE像在 Android 9 及更低版本中一样工作。不过,将会有更多的区域是禁区。
Google 希望您做的是停止考虑文件和文件系统,而是使用存储访问框架(例如, ACTION_OPEN_DOCUMENT)。

关于android - READ_EXTERNAL_STORAGE 不适用于 Android 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63098265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com