[Modify]私聊获取图片失败bug修复

This commit is contained in:
wushaocheng
2023-04-14 14:14:23 +08:00
parent 684bd5260d
commit ee1d528027
9 changed files with 177 additions and 42 deletions

View File

@@ -2,6 +2,7 @@ package com.nnbc123.app.ui.setting;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.text.SpannableString;
@@ -30,6 +31,7 @@ import com.nnbc123.app.ui.login.ShowBindPhoneActivity;
import com.nnbc123.app.ui.user.AboutActivity;
import com.nnbc123.app.ui.webview.CommonWebViewActivity;
import com.nnbc123.app.ui.withdraw.BinderAlipayActivity;
import com.nnbc123.library.common.file.FileHelper;
import com.nnbc123.library.utils.SingleToastUtil;
import com.nnbc123.library.utils.config.BasicConfig;
import com.nnbc123.library.utils.file.JXFileUtils;
@@ -238,7 +240,12 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene
SharedPreferenceUtils.remove(SharedPreferenceUtils.SEARCH_HISTORY + AuthModel.get().getCurrentUid());
File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
File dataDir;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
dataDir = new File(new File(FileHelper.getRootCacheDir().getPath(), "Android"), "data");
}else {
dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
}
File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");
JXFileUtils.deleteFile(appCacheDir);

View File

@@ -1,4 +1,44 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.nnbc123.library">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<application>
<activity
android:name=".easypermisssion.AppSettingsDialogHolderActivity"
android:exported="false"
android:label=""
android:theme="@style/EasyPermissions.Transparent" />
<activity
android:name=".easyphoto.ui.EasyPhotosActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/EasyPhotosTheme" />
<activity
android:name=".easyphoto.ui.PreviewActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/EasyPhotosFullscreenTheme" />
<activity
android:name=".easyphoto.ui.PuzzleActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/EasyPhotosTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".easyphoto.ui.PuzzleSelectorActivity"
android:configChanges="screenSize|orientation|keyboardHidden|mcc|mnc|locale|touchscreen|screenLayout|keyboard|navigation|fontScale|uiMode|smallestScreenSize|layoutDirection"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/EasyPhotosTheme" />
</application>
</manifest>

View File

@@ -1,7 +1,7 @@
<resources>
<string name="text_bitmap_too_large">傳失敗,圖片太大啦~</string>
<string name="text_bitmap_too_small">傳圖片不能小20kb</string>
<string name="android_core_env_01">請輸入正確的環</string>
<string name="android_core_env_02">請輸入正確的環</string>
<string name="android_core_env_03">先初始化</string>
<string name="text_bitmap_too_large">传失败,图片太大啦~</string>
<string name="text_bitmap_too_small">传图片不能小20kb</string>
<string name="android_core_env_01">请输入正确的环</string>
<string name="android_core_env_02">请输入正确的环</string>
<string name="android_core_env_03">先初始化</string>
</resources>

View File

@@ -1,7 +1,7 @@
<resources>
<string name="rationale_ask">如果沒有請求的限,此用程式可能法正常工作。</string>
<string name="rationale_ask_again">如果沒有請求的限,此用程式可能法正常工作,打開應用設置頁面以修改應用權限。</string>
<string name="title_settings_dialog">所需</string>
<string name="sure"></string>
<string name="rationale_ask">如果没有请求的限,此用程式可能法正常工作。</string>
<string name="rationale_ask_again">如果没有请求的限,此用程式可能法正常工作,打开应用设置页面以修改应用权限。</string>
<string name="title_settings_dialog">所需</string>
<string name="sure"></string>
<string name="cancel">取消</string>
</resources>

View File

@@ -1,50 +1,50 @@
<resources>
<string name="selector_folder_all_easy_photos">所有</string>
<string name="selector_folder_all_easy_photos">所有</string>
<string name="selector_folder_all_video_photo_easy_photos">片和視頻</string>
<string name="selector_folder_all_video_photo_easy_photos">片和视频</string>
<string name="selector_folder_video_easy_photos">所有視頻</string>
<string name="selector_folder_video_easy_photos">所有视频</string>
<string name="selector_easy_photos">選擇</string>
<string name="selector_easy_photos">选择</string>
<!--http://stackoverflow.com/questions/17502824/whats-wrong-with-this-format-string-->
<string name="selector_action_done_easy_photos">完成(%1$d/%2$d)</string>
<string name="selector_preview_easy_photos">預覽</string>
<string name="selector_preview_easy_photos">预览</string>
<string name="selector_reach_max_hint_easy_photos">超出最大選擇數</string>
<string name="selector_reach_max_hint_easy_photos">超出最大选择数</string>
<string name="selector_reach_max_image_hint_easy_photos">最多只能選擇%d張圖</string>
<string name="selector_reach_max_image_hint_easy_photos">最多只能选择%d张图</string>
<string name="selector_reach_max_video_hint_easy_photos">最多只能選擇%d個視頻</string>
<string name="selector_reach_max_video_hint_easy_photos">最多只能选择%d个视频</string>
<string name="selector_single_type_hint_easy_photos">需要選擇同種類型的文件</string>
<string name="selector_single_type_hint_easy_photos">需要选择同种类型的文件</string>
<string name="msg_no_camera_easy_photos">無法啟動相機</string>
<string name="msg_no_camera_easy_photos">无法启动相机</string>
<string name="camera_temp_file_error_easy_photos">圖片錯誤</string>
<string name="camera_temp_file_error_easy_photos">图片错误</string>
<string name="selector_permission_error_easy_photos">權限錯誤,無法正常工作!</string>
<string name="selector_permission_error_easy_photos">权限错误,无法正常工作!</string>
<string name="selector_image_size_error_easy_photos">片的度必須大於%1$d,高度必須大於%2$d</string>
<string name="selector_image_size_error_easy_photos">片的度必须大于%1$d,高度必须大于%2$d</string>
<string name="selector_image_type_error_easy_photos">不支持此片格式</string>
<string name="selector_image_type_error_easy_photos">不支持此片格式</string>
<string name="edit_easy_photos">編輯</string>
<string name="edit_easy_photos">编辑</string>
<string name="empty_easy_photos">清空</string>
<string name="no_photos_easy_photos">有符合要求的片,拍一</string>
<string name="no_photos_easy_photos">有符合要求的片,拍一</string>
<string name="no_videos_easy_photos">有符合要求的視頻</string>
<string name="no_videos_easy_photos">有符合要求的视频</string>
<string name="permissions_again_easy_photos">請點擊並允許相關權</string>
<string name="permissions_again_easy_photos">请点击并允许相关权</string>
<string name="permissions_die_easy_photos">請點擊並在設置中允許相關權</string>
<string name="permissions_die_easy_photos">请点击并在设置中允许相关权</string>
<string name="original_easy_photos"></string>
<string name="original_easy_photos"></string>
<string name="preview_current_number_easy_photos">%1$d/%2$d</string>
@@ -58,22 +58,22 @@
<string name="text_sticker_date_easy_photos">日期</string>
<string name="text_sticker_hint_easy_photos">雙擊編輯</string>
<string name="text_sticker_hint_easy_photos">双击编辑</string>
<string name="text_sticker_hint_name_easy_photos">自定</string>
<string name="text_sticker_hint_name_easy_photos">自定</string>
<string name="picture_selection_easy_photos">圖片選擇</string>
<string name="picture_selection_easy_photos">图片选择</string>
<string name="video_selection_easy_photos">視頻選擇</string>
<string name="video_selection_easy_photos">视频选择</string>
<string name="puzzle_easy_photos">拼一</string>
<string name="puzzle_easy_photos">拼一</string>
<string name="select_puzzle_photos">請選擇2 \- 9照片</string>
<string name="select_puzzle_photos">请选择2 \- 9照片</string>
<string name="gif_easy_photos">動圖</string>
<string name="gif_easy_photos">动图</string>
<string name="video_easy_photos">視頻</string>
<string name="video_easy_photos">视频</string>
<string name="give_application_storage_permission">請給予應用存儲權限,以正常保存片。</string>
<string name="give_application_storage_permission">请给予应用存储权限,以正常保存片。</string>
</resources>

View File

@@ -229,4 +229,6 @@
<string name="msg_search_limit">全文检索显示条数</string>
<string name="message_hint">请输入消息</string>
<string name="photo_file_is_empty"> 为空或者该文件不存在!</string>
</resources>

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);

View File

@@ -0,0 +1,82 @@
package com.netease.nim.uikit.business.session.actions
import android.content.Intent
import android.text.TextUtils
import com.netease.nim.uikit.R
import com.netease.nim.uikit.business.session.helper.SendImageHelper
import com.nnbc123.library.common.application.BaseApp
import com.nnbc123.library.common.base.BaseDialogFragment
import com.nnbc123.library.common.photo.PhotoProviderNew
import com.nnbc123.library.common.util.PhotoCompressUtil
import com.nnbc123.library.common.util.PhotosCompressCallback
import com.nnbc123.library.utils.ResUtil
import com.nnbc123.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) {
companion object {
private const val REQUEST_CODE_OPEN_PHOTO_PROVIDER = 111 // 从相册中选择
}
protected abstract fun onPicked(file: File)
override fun onClick() {
checkStoragePermission()
}
private fun checkStoragePermission() {
PhotoProviderNew.photoProvider(
activity,
maxSelect = 9,
resultCode = makeRequestCode(REQUEST_CODE_OPEN_PHOTO_PROVIDER)
)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == BaseDialogFragment.RESULT_OK) {
when (requestCode) {
REQUEST_CODE_OPEN_PHOTO_PROVIDER -> {
if (data == null) return
PhotoProviderNew.getResultPathListAsync(data) { list ->
val paths = list?.toMutableList() ?: ArrayList()
if (paths.isEmpty()) {
SingleToastUtil.showToastShort(R.string.picker_image_error)
} else {
PhotoCompressUtil.compress(
BaseApp.getContext(),
paths,
PhotoCompressUtil.getCompressCachePath(),
object : PhotosCompressCallback {
override fun onSuccess(compressedImgList: ArrayList<String>) {
// sendImageAfterSelfImagePicker(compressedImgList)
for (path in compressedImgList) {
val file = File(path)
if (TextUtils.isEmpty(path) || !file.exists()) {
SingleToastUtil.showToastShort(path + ResUtil.getString(R.string.photo_file_is_empty))
return
}
onPicked(file)
}
}
override fun onFail(e: Throwable) {
SingleToastUtil.showToastShort(R.string.picker_image_error)
}
})
}
}
}
}
}
}
}

View File

@@ -8,6 +8,8 @@ import android.os.StatFs;
import android.text.TextUtils;
import android.util.Log;
import com.nnbc123.library.common.file.FileHelper;
import java.io.File;
import java.io.IOException;
@@ -65,7 +67,8 @@ public class ExternalStorage {
}
private void loadStorageState(Context context) {
String externalPath = Environment.getExternalStorageDirectory().getPath();
// String externalPath = Environment.getExternalStorageDirectory().getPath();
String externalPath = FileHelper.getRootCacheDir().getPath();
this.sdkStorageRoot = externalPath + "/" + context.getPackageName() + "/";
}
@@ -173,7 +176,8 @@ public class ExternalStorage {
}
public boolean isSdkStorageReady() {
String externalRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
// String externalRoot = Environment.getExternalStorageDirectory().getAbsolutePath();
String externalRoot = FileHelper.getRootCacheDir().getPath();
if (this.sdkStorageRoot.startsWith(externalRoot)) {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
} else {