From 2e91f8abdcb87feda9e237895d4460a19fd7aed8 Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期五, 10 一月 2025 15:41:23 +0800 Subject: [PATCH] 2025年01月10日15:40:19 --- app/src/main/java/com/hdl/photovoltaic/widget/popupview/CameraAlbumPopWindow.java | 73 ++++++++++++++++++++++++------------ 1 files changed, 48 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/popupview/CameraAlbumPopWindow.java b/app/src/main/java/com/hdl/photovoltaic/widget/popupview/CameraAlbumPopWindow.java index 6bffa6b..0ad2f74 100644 --- a/app/src/main/java/com/hdl/photovoltaic/widget/popupview/CameraAlbumPopWindow.java +++ b/app/src/main/java/com/hdl/photovoltaic/widget/popupview/CameraAlbumPopWindow.java @@ -17,6 +17,7 @@ import android.os.Environment; import android.provider.DocumentsContract; import android.provider.MediaStore; +import android.provider.Settings; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -26,7 +27,10 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import androidx.core.content.FileProvider; + import com.hdl.photovoltaic.R; +import com.hdl.photovoltaic.other.HdlDialogLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.utils.PermissionUtils; import com.hdl.photovoltaic.utils.SharedPreUtils; @@ -98,7 +102,7 @@ */ private void checkPermission_After(final Activity context, final int tag) { String permission = Manifest.permission.CAMERA; - int status = PermissionUtils.getAuthorizeStaus(context, permission); + int status = PermissionUtils.getPermissionState(context, permission); switch (status) { case PermissionUtils.STATUS_SUCCESS: @@ -133,7 +137,8 @@ }); break; case PermissionUtils.STATUS_REFUSE_PERMANENT: - HdlThreadLogic.toast(mContext, R.string.permission_open); +// HdlThreadLogic.toast(mContext, R.string.permission_open); + HdlDialogLogic.getInstance().showSettingPermissionDialog(mContext); break; } } @@ -200,32 +205,46 @@ * 鎷嶇収鑾峰彇鍥剧墖 **/ private void take_photo() { - //鑾峰彇绯荤当鐗堟湰 - int currentapiVersion = Build.VERSION.SDK_INT; - // 婵�娲荤浉鏈� - Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - // 鍒ゆ柇瀛樺偍鍗℃槸鍚﹀彲浠ョ敤锛屽彲鐢ㄨ繘琛屽瓨鍌� - SimpleDateFormat timeStampFormat = new SimpleDateFormat( - "yyyy_MM_dd_HH_mm_ss", Locale.ENGLISH); - String filename = timeStampFormat.format(new Date()); - outputImagepath = new File(hdl_Dir, - filename + ".jpg"); - if (currentapiVersion < 24) { - // 浠庢枃浠朵腑鍒涘缓uri - Uri uri = Uri.fromFile(outputImagepath); - intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); - } else { + try { + //鑾峰彇绯荤当鐗堟湰 + int currentapiVersion = Build.VERSION.SDK_INT; + // 婵�娲荤浉鏈� + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + // 鍒ゆ柇瀛樺偍鍗℃槸鍚﹀彲浠ョ敤锛屽彲鐢ㄨ繘琛屽瓨鍌� + SimpleDateFormat timeStampFormat = new SimpleDateFormat( + "yyyy_MM_dd_HH_mm_ss", Locale.ENGLISH); + String filename = timeStampFormat.format(new Date()); + outputImagepath = new File(hdl_Dir, + filename + ".jpg"); + if (currentapiVersion < 24) { + // 浠庢枃浠朵腑鍒涘缓uri + Uri uri = Uri.fromFile(outputImagepath); + intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); + } else { +// //鍏煎android7.0 浣跨敤鍏变韩鏂囦欢鐨勫舰寮� +// ContentValues contentValues = new ContentValues(1); +// contentValues.put(MediaStore.Images.Media.DATA, outputImagepath.getAbsolutePath()); +// Uri uri = mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); +// intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); +// Uri photoURI = FileProvider.getUriForFile(mContext, "com.hdl.photovoltaic.dc.fileprovider", outputImagepath); +// intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); +// intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); + //鍏煎android7.0 浣跨敤鍏变韩鏂囦欢鐨勫舰寮� ContentValues contentValues = new ContentValues(1); - contentValues.put(MediaStore.Images.Media.DATA, outputImagepath.getAbsolutePath()); + contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, outputImagepath.getName()); + contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); Uri uri = mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); -// Uri photoURI= FileProvider.getUriForFile(mContext,"com.hdl.debugtreasure.dc.fileprovider",outputImagepath); -// intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); -// intent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI); + Uri photoURI = FileProvider.getUriForFile(mContext, "com.hdl.photovoltaic.fileProvider", outputImagepath); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + intent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); + } + // 寮�鍚竴涓甫鏈夎繑鍥炲�肩殑Activity锛岃姹傜爜涓篜HOTO_REQUEST_CAREMA + ((Activity) mContext).startActivityForResult(intent, TAKE_PHOTO); + } catch (Exception e) { + HdlThreadLogic.toast(mContext, R.string.loading_not_supported); } - // 寮�鍚竴涓甫鏈夎繑鍥炲�肩殑Activity锛岃姹傜爜涓篜HOTO_REQUEST_CAREMA - ((Activity) mContext).startActivityForResult(intent, TAKE_PHOTO); } @@ -237,12 +256,15 @@ HdlThreadLogic.toast(mContext, R.string.camera_album_file_save_fial); } else { if (!TextUtils.isEmpty(outputImagepath.getAbsolutePath())) { + //娉ㄦ剰锛�(android13,14闇�瑕佸啀璁剧疆-闅愮-)鐗规畩鏉冮檺璁剧疆 orc_bitmap = BitmapFactory.decodeFile(outputImagepath.getAbsolutePath());//鑾峰彇鍥剧墖 saveBitmap(comp(ImgUpdateDirection(outputImagepath.getAbsolutePath()))); //鍘嬬缉鍥剧墖 } else { HdlThreadLogic.toast(mContext, R.string.camera_album_file_get_fial); } } + + } /** @@ -413,7 +435,7 @@ */ private void select_photo() { String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE; - int status = PermissionUtils.getAuthorizeStaus(mContext, permission); + int status = PermissionUtils.getPermissionState(mContext, permission); switch (status) { case PermissionUtils.STATUS_SUCCESS: @@ -437,7 +459,8 @@ }); break; case PermissionUtils.STATUS_REFUSE_PERMANENT: - HdlThreadLogic.toast(mContext, R.string.permission_open); +// HdlThreadLogic.toast(mContext, R.string.permission_open); + HdlDialogLogic.getInstance().showSettingPermissionDialog(mContext); break; } } -- Gitblit v1.8.0