admin管理员组文章数量:1516870
一、前言
在Android12版本上面使用
MediaStore
时候有时候会遇到以下错误:
java.lang.IllegalArgumentException: Invalid token /storage/emulated/0/Download/s-kz-02.jpg
其代码编写如下:
val res: Int = contentResolver.delete(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
MediaStore.Images.Media.DATA +"= \""+ filePath +"\"",null)
该问题的解决方式为,在高版本授予
全部文件访问
权限。其代码使用方式如下:
**注:**如果使用
MediaStore.Images.Media._ID
的方式删除也是删不掉的。另外File文件删除也删不掉(因为没权限)
二、原因
AndroidQ (version 29以上)对文件访问进行了限制,如果想对文件进行修改的话需要用户授权。所以如果想绕开用户授权的话只能使用上述方式。下面给出常规方式,代码如下:
privateconstval DELETE_PERMISSION_REQUEST =0x1033privateval permissionNeededForDelete: IntentSender =
recoverableSecurityException.userAction.actionIntent.intentSend
startIntentSenderForResult(
permissionNeededForDelete,
DELETE_PERMISSION_REQUEST,null,0,0,0,null)//上述现获取授权,下一步再调用MediaStore进行删除:
getApplication<Application>().contentResolver.delete(
image.contentUri,"${MediaStore.Images.Media._ID} = ?",arrayOf(image.id.toString()))
**注:**倘若已经通过SAF获取授权后则可以通过Uri的方式进行批量删除。
参考代码如下:
版权声明:本文标题:storage路径难题:图片文件s-kz-02.jpg为何引发invalid token警报 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1771605216a3267415.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论