[Modify]修改图片选择的逻辑

This commit is contained in:
wushaocheng
2022-12-01 20:35:52 +08:00
parent 2c398f8c8c
commit c10aa4af68
31 changed files with 440 additions and 59 deletions

View File

@@ -14,7 +14,7 @@ import java.io.File;
/**
* Created by hzxuwen on 2015/6/12.
*/
public class ImageAction extends PickImageAction {
public class ImageAction extends PickImageActionNew{
public ImageAction() {
super(R.drawable.chat_icon_photo, R.string.input_panel_photo, true);
@@ -32,5 +32,6 @@ public class ImageAction extends PickImageAction {
EventBus.getDefault().post(new ActiveEvent());
}
}

View File

@@ -44,8 +44,6 @@ public abstract class PickImageAction extends BaseAction {
public void onClick() {
int requestCode = makeRequestCode(RequestCode.PICK_IMAGE);
showSelector(getTitleId(), requestCode, multiSelect, tempFile());
}
private String tempFile() {
@@ -111,7 +109,6 @@ public abstract class PickImageAction extends BaseAction {
private boolean handleImagePath(Intent intent, Intent data) {
String photoPath = data.getStringExtra(Extras.EXTRA_FILE_PATH);
if (TextUtils.isEmpty(photoPath)) {
// Toast.makeText(getActivity(), R.string.picker_image_error, Toast.LENGTH_LONG).show();
SingleToastUtil.showToastShort(R.string.picker_image_error);
return false;
}

View File

@@ -0,0 +1,99 @@
package com.netease.nim.uikit.business.session.actions
import android.content.Intent
import com.netease.nim.uikit.R
import com.netease.nim.uikit.business.session.constant.Extras
import com.netease.nim.uikit.business.session.constant.RequestCode
import com.netease.nim.uikit.business.session.helper.SendImageHelper
import com.yizhuan.xchat_android_library.easypermisssion.EasyPermissions
import com.yizhuan.xchat_android_library.utils.SingleToastUtil
import java.io.File
/**
* Created by zhoujianghua on 2015/7/31.
*/
abstract class PickImageActionNew protected constructor(
iconResId: Int,
titleId: Int,
private val multiSelect: Boolean
) : BaseAction(iconResId, titleId), EasyPermissions.PermissionCallbacks {
companion object{
private const val REQUEST_CODE_OPEN_PHOTO_PROVIDER = 111 // 从相册中选择
}
protected abstract fun onPicked(file: File)
override fun onClick() {
checkStoragePermission()
}
private fun checkStoragePermission() {
// if (!EasyPermissions.hasPermissions(
// this,
// Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.READ_EXTERNAL_STORAGE
// )
// ) {
// EasyPermissions.requestPermissions(
// this,
// getString(R.string.permission_storage_rationale),
// PERMISSION_CODE_STORAGE,
// Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.READ_EXTERNAL_STORAGE
// )
// } else {
// PhotoProvider.photoProvider(
// this,
// resultCode = REQUEST_CODE_OPEN_PHOTO_PROVIDER
// )
// }
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
}
override fun onPermissionsGranted(requestCode: Int, perms: List<String>) {
}
override fun onPermissionsDenied(requestCode: Int, perms: List<String>) {
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
when (requestCode) {
RequestCode.PICK_IMAGE -> onPickImageActivityResult(requestCode, data)
}
}
/**
* 图片选取回调
*/
private fun onPickImageActivityResult(requestCode: Int, data: Intent?) {
if (data == null) {
SingleToastUtil.showToastShort(R.string.picker_image_error)
return
}
val local = data.getBooleanExtra(Extras.EXTRA_FROM_LOCAL, false)
if (local) {
// 本地相册
sendImageAfterSelfImagePicker(data)
}
}
/**
* 发送图片
*/
private fun sendImageAfterSelfImagePicker(data: Intent) {
SendImageHelper.sendImageAfterSelfImagePicker(activity, data) { file, isOrig ->
onPicked(
file
)
}
}
}