gpt4 book ai didi

Android 媒体扫描仪 : How do I remove files?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:50 25 4
gpt4 key购买 nike

我正在编写一个应用程序,用于删除可能会或可能不会在任何一种类型的媒体库中列出的文件,例如音乐或图片。虽然我可以使用 MediaScannerConnection.scanFile 方法将文件添加 到媒体库,但似乎没有任何调用来通知服务文件已被删除。将不再存在的文件路径发送给它也不会导致所需的行为。我应该如何从库中删除 Android 存储设备上不再存在的项目?

最佳答案

我能够使用这两个问题的点点滴滴将一个方法放在一起

  1. What is the String 'volumeName' argument of MediaStore.Audio.Playlists.Members.getContentUri referring to?
  2. How can I refresh MediaStore on Android?

基本上,我只是对每种 MediaStore 类型(音频、视频和图像)运行查询,按路径选择并删除我找到的任何记录。

public static void RemoveAllForPaths(String[] paths, Context context)
{
private static final String[] FIELDS = { MediaStore.MediaColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.TITLE };
if(paths == null || paths.length == 0) return;
String select = "";
for(String path : paths)
{
if(!select.equals("")) select += " OR ";
select += MediaStore.MediaColumns.DATA + "=?";
}

Uri uri;
Cursor ca;

uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ca = context.getContentResolver().query(uri, FIELDS, select, paths, null);
for(ca.moveToFirst(); !ca.isAfterLast(); ca.moveToNext()){
int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
context.getContentResolver().delete(uri, null, null);
}
ca.close();

// More of the same just setting the URI to Video and Images
}

我不完全确定这样做有多安全,但这是迄今为止我找到的唯一解决方案,一些初步测试似乎有效。如果有人对此方法有任何进一步的信息或执行此功能的更好方法,我邀请其他人提交其他答案。

关于Android 媒体扫描仪 : How do I remove files?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com