【问题标题】:Error when selecting 1 image from Intent Multiple从 Intent Multiple 中选择 1 张图像时出错
【发布时间】:2022-01-08 08:54:58
【问题描述】:

下面的代码在选择多个图像时可以正常工作,但是如果选择的图像只有一个,它会给我一个错误。这是错误

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1110896904, result=-1, data=Intent

这是代码

@SuppressLint("IntentReset")
    private fun checkAccessAndUpload() {
        if (context?.let {
                EasyPermissions.hasPermissions(
                    it,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE
                )
            } == true) {

            if (Build.VERSION.SDK_INT < 19) {
                var intent = Intent()
                intent.type = "image/*"
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
                intent.action = Intent.ACTION_GET_CONTENT
                startActivityForResult(
                    Intent.createChooser(intent, "Select Picture")
                    , PICK_IMAGE_MULTIPLE
                )
            } else {
                var intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
                intent.addCategory(Intent.CATEGORY_OPENABLE)
                intent.type = "image/*"
                startActivityForResult(intent, PICK_IMAGE_MULTIPLE)
            }


        } else {
            EasyPermissions.requestPermissions(
                this,
                "We need to access your camera and storage to upload your pictures",
                123,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.READ_EXTERNAL_STORAGE
            )
        }
    }


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == PICK_IMAGE_MULTIPLE && resultCode == Activity.RESULT_OK && null != data) {
            val count = data.clipData!!.itemCount
            for (i in 0 until count) {
                var imageUri: Uri = data.clipData!!.getItemAt(i).uri
                ImageList.add(imageUri)
            }

            uploadImage()
        }

    }

错误发生在这里

val count = data.clipData!!.itemCount

如何解决此错误,以便我的画廊意图可以选择 1 或多个

【问题讨论】:

    标签: android kotlin android-intent


    【解决方案1】:

    像这样修改代码

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == PICK_IMAGE_MULTIPLE  && resultCode == Activity.RESULT_OK && null != data) {
            if(data.clipData != null) {
                val count = data.clipData!!.itemCount
                for (i in 0 until count) {
                    var imageUri: Uri = data.clipData!!.getItemAt(i).uri
                    ImageList.add(imageUri)
                }
            }else if(data.data != null) {
                var imageUri: Uri = data.data!!
                ImageList.add(imageUri)
            }
            uploadImage()
        }
    
    }
    

    【讨论】:

    • 它给了我一个错误 E/StorageException: No content provider: /document/image:6264 并且当我检查我的 Firebase 时,它​​会在我只选择一个后上传不同的图片
    • 改变 'var imageUri: Uri = Uri.parse(data.data!!.path)' 到' var imageUri: Uri = data.data!! '
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多