画廊图像选择意图返回null在Android 11及更高版本上

发布于 2025-02-01 05:01:03 字数 1407 浏览 3 评论 0原文

尝试从画廊中挑选图像时,我的意图数据无效。 我应该进行什么更改,以便代码正常工作。

我的选择图像代码如下:

`

fun pickimage(requestCode: Int){
 val pickIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
    pickIntent.type = "image/*"

    try {
        startActivityForResult(pickIntent,requestCode)
    }
    catch (e:Exception){
        Toast.makeText(requireContext(),requireContext().resources.getString(R.string.error) ,
            Toast.LENGTH_LONG).show()
    }
}

OnActivityResult()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) {
            data?.data?.let { fullPhotoUri ->
                fullPhotoUri.toBytes(viewModel.contentResolver)?.takeIf { it.isNotEmpty() }?.also {
                    file.loadByteArray(it)


                    viewModel.onImageSelected { file }
                }
            }
        }
    }

权限

 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />

I'm getting intent data null when trying to pick image from gallery.
What changes shall I make so the code work correctly.

My pick image code is as following:

`

fun pickimage(requestCode: Int){
 val pickIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
    pickIntent.type = "image/*"

    try {
        startActivityForResult(pickIntent,requestCode)
    }
    catch (e:Exception){
        Toast.makeText(requireContext(),requireContext().resources.getString(R.string.error) ,
            Toast.LENGTH_LONG).show()
    }
}

onActivityResult()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) {
            data?.data?.let { fullPhotoUri ->
                fullPhotoUri.toBytes(viewModel.contentResolver)?.takeIf { it.isNotEmpty() }?.also {
                    file.loadByteArray(it)


                    viewModel.onImageSelected { file }
                }
            }
        }
    }

permissions

 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文