日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

处理android11以上无法删除相册图片的问题

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理android11以上无法删除相册图片的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在android11手機上,當APP重新安裝后,無法刪除之前在APP上保存的圖片,是因為沒有app沒有修改這張圖片的權限,所以需要重新手動申請權限,先上圖:

功能代碼實現:
1、創建一個fragment,用于處理fragment 的回調信息。如果是activity的話,直接在 onActivityResult處理就可以了

class ActivityResultFragment : Fragment() {private var onActivityResultListener: ActivityResultListener? = nulloverride fun onCreate(@Nullable savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)onActivityResultListener!!.onRequest(this)}override fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?) {super.onActivityResult(requestCode, resultCode, data)onActivityResultListener!!.onActivityResult(requestCode, resultCode, data)if (activity != null) {val transaction: FragmentTransaction =requireActivity().supportFragmentManager.beginTransaction()transaction.remove(this)transaction.commit()}}interface ActivityResultListener {fun onRequest(fragment: ActivityResultFragment?)fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?)}companion object {private const val TAG = "ActivityResultFragment"fun registerActivityResult(activity: FragmentActivity,@NonNull listener: ActivityResultListener) {val transaction: FragmentTransaction =activity.supportFragmentManager.beginTransaction()var fragment =activity.supportFragmentManager.findFragmentByTag(TAG) as? ActivityResultFragmentif (fragment == null) {fragment = ActivityResultFragment()}fragment.onActivityResultListener = listenerif (fragment.isAdded) {listener.onRequest(fragment)} else {transaction.add(fragment, TAG)}transaction.commit()}} }interface FileUtilCallback {fun onResult(success: Boolean) }

2、創建刪除文件的工具類

object ImageUtil {/*** 刪除文件* @return*/fun deleteFileUri(activity: FragmentActivity, imgPath: String, callBack: FileUtilCallback) {val cursor: Cursor = MediaStore.Images.Media.query(activity.contentResolver,MediaStore.Images.Media.EXTERNAL_CONTENT_URI,arrayOf<String>(MediaStore.Images.Media._ID),MediaStore.Images.Media.DATA.toString() + "=?",arrayOf(imgPath),null)try {if (cursor.moveToFirst()) {val id: Long = cursor.getLong(0)val contentUri: Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URIval uri: Uri = ContentUris.withAppendedId(contentUri, id)val count: Int = activity.contentResolver.delete(uri, null, null)if (count > 0) {callBack.onResult(true)} else {callBack.onResult(false)}} else {val isSuccess = File(imgPath).delete()if (isSuccess) {callBack.onResult(true)} else {callBack.onResult(false)}}} catch (e: java.lang.Exception) {e.printStackTrace()if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && e is RecoverableSecurityException) {val DELETE_REQUEST_CODE = 1001ActivityResultFragment.registerActivityResult(activity,object : ActivityResultFragment.ActivityResultListener {override fun onRequest(fragment: ActivityResultFragment?) {try {fragment!!.startIntentSenderForResult(e.userAction.actionIntent.intentSender,DELETE_REQUEST_CODE,null,0, 0, 0, null)} catch (sendIntentException: IntentSender.SendIntentException) {sendIntentException.printStackTrace()callBack.onResult(false)}}override fun onActivityResult(requestCode: Int,resultCode: Int,@Nullable data: Intent?) {if (requestCode == DELETE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {deleteFileUri(activity, imgPath, callBack)} else {callBack.onResult(false)}}})} else {callBack.onResult(false)}}}}

3、在界面中設置一個點擊事件,實現刪除圖片功能的調用

R.id.delteimage -> {ImageUtil.deleteFileUri(requireActivity(),imagePath, //圖片路徑object : FileUtilCallback {override fun onResult(success: Boolean) {if (success) {ToastUtils.showBottom("刪除成功")goSelectPhoto() //更新列表} else {ToastUtils.showBottom("刪除失敗,請手動刪除")}}}) }

現在就可以實現在fragment里面 實現刪除文件功能,在獲取權限后自動刪除該文件了

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的处理android11以上无法删除相册图片的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。