如何解决如何在API 29+中删除Mediastore中的文件?
我正在构建画廊应用程序,并且尝试使用contentResolver().delete()
删除媒体存储区中的图像。但这会引发异常。
我该如何解决?我正在使用API 29。
我的代码:
public static void removeFile(Context context,String uriStr) {
Uri uri = Uri.parse(uriStr);
context.getContentResolver().delete(uri,null,null);
}
错误日志:
2020-11-09 08:17:54.806 12098-12098/com.example.mygallery E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mygallery,PID: 12098
android.app.RecoverableSecurityException: com.example.mygallery has no access to content://media/external/images/media/39
at android.app.RecoverableSecurityException$1.createFromParcel(RecoverableSecurityException.java:197)
at android.app.RecoverableSecurityException$1.createFromParcel(RecoverableSecurityException.java:194)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.delete(ContentProviderNative.java:624)
at android.content.ContentResolver.delete(ContentResolver.java:2289)
at android.content.ContentResolver.delete(ContentResolver.java:2255)
at com.example.mygallery.database.FileHelper.removeFile(FileHelper.java:72)
at com.example.mygallery.database.ImageDAOImpl.deleteMediaFile(ImageDAOImpl.java:83)
at com.example.mygallery.fragment.HomeFragment$1.onClick(HomeFragment.java:165)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。