Android's Media Scanner: How do I remove files?

前端 未结 5 680
轮回少年
轮回少年 2020-12-08 17:42

I\'m writing an app that removes files that may or may not be listed in any one of the types of media libraries such as music or pictures. While I can use the MediaSca

5条回答
  •  隐瞒了意图╮
    2020-12-08 17:59

    I was able to put a method together using bits and pieces from these two questions

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

    Basically I just run a query on each one of the MediaStore types (Audio, Video and Images) selecting by path and deleting any records I find.

    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
    }
    

    I'm not entirely sure how safe this is to do but it's the only solution I've found so far and some initial testing seems to be working. I invite others to submit other answers if anyone has any further information on this approach or a better method for performing this functionality.

提交回复
热议问题