我想将图库中的照片和相机作为文件发送到服务器,并且我已经使用库canhub,但在activityResult中数据为空。
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
}
}
}
}
和
private fun launchImageCrop(uri: Uri) {
CropImage.activity(uri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1920, 1080)
.setCropShape(CropImageView.CropShape.RECTANGLE)
.start(requireContext(),this);
}
并添加清单
android:requestLegacyExternalStorage="true"
发布于 2021-05-19 14:15:20
嗨,我遇到了类似的问题,请尝试一下有时问题是谷歌不允许使用Environment.getExternalStorageDirectory()
这是一种新方法
ContextWrapper cw = new ContextWrapper(mContext);
File directory = cw.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, "name_of_file");
另外,请不要使用android:requestLegacyExternalStorage="true",谷歌可能会在playstore中拒绝你的应用
https://stackoverflow.com/questions/67597737
复制相似问题