小编Jan*_*ngs的帖子

READ_EXTERNAL_STORAGE 不适用于 Android 10

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

显现

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

分段

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)
  }
}
Run Code Online (Sandbox Code Playgroud)

文件路径显示在日志中。绝对的,喜欢file:///emulated/0/...photo.jpg,方便,因为你可以立即上传到服务器,但毕加索和服务器不接受照片,或者说它似乎不允许读取(毕加索由于错误显示占位符)。此代码仅在您添加requestLegacyExternalStorage到清单时才有效。然后一切正常,但是这个属性在 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 = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-external-storage

4
推荐指数
1
解决办法
2210
查看次数

标签 统计

android ×1

android-external-storage ×1

kotlin ×1