首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android(10和11)中用相机拍照并将文件发送到服务器

在android(10和11)中用相机拍照并将文件发送到服务器
EN

Stack Overflow用户
提问于 2021-05-19 14:01:26
回答 1查看 39关注 0票数 0

我想将图库中的照片和相机作为文件发送到服务器,并且我已经使用库canhub,但在activityResult中数据为空。

代码语言:javascript
运行
复制
 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (requestCode) {

            GALLERY_REQUEST_CODE -> {
                if (resultCode == Activity.RESULT_OK) {
                    data?.data?.let { uri ->
                        launchImageCrop(uri)
                    }
                }
            }
            CAMERA_REQUEST_CODE -> {
                if (resultCode == Activity.RESULT_OK) {
                    data!!.data?.let { uri ->

                        launchImageCrop(uri)
                    }
                }
            }
            CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE -> {
                val result = CropImage.getActivityResult(data)
                if (resultCode == Activity.RESULT_OK && requestCode == GALLERY_REQUEST_CODE) {

                    val file = File(Environment.getExternalStorageDirectory(), "read.me")
                    val uri = Uri.fromFile(file)
                    val auxFile = File(uri.path)
                    viewModel.getUserCardInfo(auxFile)
                } else {
                    (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
                   // val error = CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE
                   // toast(error)
                }

                if (resultCode == Activity.RESULT_OK && requestCode == CAMERA_REQUEST_CODE) {
                    val photo: Bitmap = result!!.bitmap
                    val mFile = context?.convertToFile(photo)
                    if (mFile != null) {
                        viewModel.getUserCardInfo(mFile)
                    }
                }else{

                        CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE
                }
            }

        }
    }

代码语言:javascript
运行
复制
  private fun launchImageCrop(uri: Uri) {
    CropImage.activity(uri)
        .setGuidelines(CropImageView.Guidelines.ON)
        .setAspectRatio(1920, 1080)
        .setCropShape(CropImageView.CropShape.RECTANGLE)
        .start(requireContext(),this);
}

并添加清单

代码语言:javascript
运行
复制
   android:requestLegacyExternalStorage="true"
EN

回答 1

Stack Overflow用户

发布于 2021-05-19 14:15:20

嗨,我遇到了类似的问题,请尝试一下有时问题是谷歌不允许使用Environment.getExternalStorageDirectory()

这是一种新方法

代码语言:javascript
运行
复制
ContextWrapper cw = new ContextWrapper(mContext);
File directory = cw.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, "name_of_file");

另外,请不要使用android:requestLegacyExternalStorage="true",谷歌可能会在playstore中拒绝你的应用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67597737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档