最近项目上遇到个BUG,无法删除外置SD卡上的音乐文件。
打开代码看,使用的是 File.delete() 这个API
这个API在4.4以后是无法删除外置SD卡文件的。
直接给出方案
//通过contentProvider类拿到访问媒体文件库的游标
Cursor c = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection.toString(),
null, null);
//获取媒体文j根URI,具体媒体类型根据实际调整,这里是音频,所以用的Media。
Uri baseUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
//利用游标构造文件路径
String where = MediaStore.Images.Media.DATA + "='" + c.getString(1) + "'";
//调用API删除文件
int deleteRow= context.getContentResolver().delete(baseUri, where, null);
需要添加系统权限
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
当然删除外置文件需要给APK打入系统签名。