Androidは画像を削除した後にメディアライブラリを更新します

アプリで画像が削除されることがあり、画像セレクターを呼び出すと、削除された画像がまだ存在している(表示できない)ことがわかります。これは、画像は削除されていますが、メディアライブラリ内のレコードはまだ存在し、同期更新がないためです。メディアライブラリは、電話の再起動後に更新されます。

ファイルを削除した後、次のコードを呼び出してメディアライブラリを更新できます。

状況1:

削除する単一の画像、正確な画像パスがわかっている場合:

    /**
     * 刷新媒体数据,让文件立刻显示在相册中
     *
     * @param mContext
     * @param filePath 文件(图片)全路径; ./aa/bb/cc.jpg
     */
    public static void refreshMedia(Context mContext, String filePath) {
        MediaScannerConnection.scanFile(mContext,
                new String[]{filePath},
                new String[]{"image/jpeg", "image/png", "image/jpg"},
                (path, uri) -> {
                    LegoLog.d("onScanCompleted:" + path);
                });
    }

状況2:

削除されるものフォルダー(複数の画像)の場合、各画像の特定のパスが明確でない場合:

    /**
     * 删除文件后更新数据库  通知媒体库更新文件夹
     *
     * @param context
     * @param filepath 文件夹路径)要求尽量精确,以防删错
     */
    public static void updateFileFromDatabase(Context context, String filepath) {
        String where = MediaStore.Audio.Media.DATA + " like \"" + filepath + "%" + "\"";
        // _data like "/storage/emulated/0/ipw200/image/chn0_0/%"
//        LegoLog.d("删除条件:" + where);
        int i = context.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, where, null);
        if (i > 0) {
            LegoLog.d("媒体库更新成功!");
        }
    }
オリジナルの記事を45件公開 24のように 50,000以上の訪問

おすすめ

転載: blog.csdn.net/zhijiandedaima/article/details/105074698