13

ストックギャラリーアプリで画像ファイルを非表示にするアプリを開発しています。同じように、.nomediaファイルを作成し、MediaScanner に更新を依頼しています。

この手法は、隠しファイルを表示する必要がある場合、つまり .nomedia ファイルを削除し、そのフォルダーに存在するすべてのファイルをスキャンしてギャラリーに表示する必要がある場合に有効です。しかし、画像を非表示にしたい場合、.nomedia ファイルを配置してから、MediaScanner にそのフォルダー内のすべてのファイルをスキャンするように要求しても、それらの写真はギャラリーから非表示になりません。

次のコードを使用してファイルをスキャンしています

private void refreshPic(String path) {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(path);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

私はそれを正しい方法でやっていますか?または、メディア ストアからファイルを削除するには、他のものが必要ですか?

テスト端末: Nexus 5 (4.4.2)

ありがとう。

4

2 に答える 2

0

ブロードキャストの送信は機能しません。ContentResolver を使用して MediaStore を更新する

delete(android.net.Uri, ava.lang.String, ava.lang.String)

update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String)

于 2016-04-26T09:54:48.733 に答える
0

私はファイルをアプリのルート フォルダーに追加し.nomedia、1 日ほど後に (再起動するとこれがより速く行われるようです)、メディア スキャナーへの他の呼び出しなしでファイルがユーザーのギャラリーから削除されました。

この動作は、Android 4.4.2 および 6.0.1 で確認されています。

于 2017-10-05T11:42:16.727 に答える