12

私のアプリでは、ユーザーは画像を SD カードに保存できます。しかし、SDカードをアンマウントして再マウントするまで、ギャラリーに表示する方法がわかりません。この問題で数日間グーグルで検索しましたが、自動的に表示する方法がわかりません。このリンクを見つけまし たが、クラスの使用方法がわかりません。これは、ファイルを保存するために使用するものです。try catch ブロックの一番下にあるのは、SD カードをスキャンして新しいメディアを探す場所です。

    FileOutputStream outStream = null;
    File file = new File(dirPath, fileName);
    try {
        outStream = new FileOutputStream(file);
        bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
        outStream.flush();
        outStream.close();
    } catch {
         ...
    }

誰かが私を正しい方向に向けることができれば、私は感謝します。

4

6 に答える 6

5

私が投稿した最後の回答は明らかに適切な方法ではなかったので、ここで別の方法を見つけました。基本的に、ラッパー クラスを作成して初期化し、scan() メソッドを呼び出します。非常に役立つ投稿。これも適切でない場合はお知らせください。

于 2011-01-24T22:32:30.877 に答える
3

MediaScannerConnectionを使用します。

http://developer.android.com/reference/android/media/MediaScannerConnection.html

非同期呼び出しのレベルが複数あるため、少し面倒な場合があります。そのため、API 8(Froyo)の時点で、ヘルパー関数があります。

http://developer.android.com/reference/android/media/MediaScannerConnection.html#scanFile(android.content.Context、java.lang.String []、java.lang.String []、android.media.MediaScannerConnection。 OnScanCompletedListener)

于 2011-01-21T01:57:56.863 に答える
3

ブロードキャストを送信して、メディア スキャナを明示的に呼び出すこともできます。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
                    .parse("file://"
                            + Environment.getExternalStorageDirectory())));

編集

これは古い投稿でした。新しいバージョンに更新する

Android は、アプリがこのようなシステム ブロードキャストになりすますことを防止するための措置を講じています。

外部ストレージに保存したファイルのインデックスを作成するよう Android に指示する場合は、MediaScannerConnectionまたはを使用します。ACTION_MEDIA_SCANNER_SCAN_FILE

参考:この記事

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    final Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    final Uri contentUri = Uri.fromFile(outputFile); 
    scanIntent.setData(contentUri);
    sendBroadcast(scanIntent);
} else {
    final Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()));
    sendBroadcast(intent);
}

上記のコードが機能しない場合は、次のことを試してください。

MediaScannerConnection.scanFile(this, new String[] {
    file.getAbsolutePath()
}, null, new MediaScannerConnection.OnScanCompletedListener() {

    @Override
    public void onScanCompleted(String path, Uri uri) {


    }
});
于 2013-08-20T07:31:14.320 に答える
0

MediaStore.Images.Media.insertImageギャラリーにアイテムを挿入するために使用できます。

于 2011-01-20T22:25:58.033 に答える