Android 刪除圖片後刷新媒體庫

有時候在App內刪除了圖片,調用圖片選擇器會看到刪除了的圖片還存在(顯示不出來),這是由於圖片被刪除了,但是媒體庫的記錄還存在,沒有同步刷新造成的,手機重啓後媒體庫會被刷新。

我們可以在刪除文件後調用如下代碼刷新媒體庫:

情況一:

刪除單張圖片,知道準確的圖片路徑時:

    /**
     * 刷新媒體數據,讓文件立刻顯示在相冊中
     *
     * @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);
                });
    }

情況二:

刪除的是文件夾時(多張圖片),不清楚每張圖片具體路徑時:

    /**
     * 刪除文件後更新數據庫  通知媒體庫更新文件夾
     *
     * @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("媒體庫更新成功!");
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章