バックグラウンド
ユーザーが新しい画像をダウンロードするか、カメラを使用してキャプチャすると、ギャラリー アプリが更新されて新しい画像が表示されます。
ギャラリーアプリが示すように、作成方法(カメラ、ブラウザなど)に関係なく、新しい画像が作成されるとすぐに通知を受ける必要があります。
問題
すべての種類のメディア ファイルのスキャンを担当する mediaScanner Android コンポーネントがあり、それが終了すると、インテント " MEDIA_SCANNER_FINISHED " を送信することになっています (この例に示すように)。
そこで、ユーザーがカメラ アプリから写真を撮るたびにトーストが表示されることを期待して、次のコードを追加しました。
マニフェスト:
...
<receiver android:name="com.example.newgalleryimagereceivertest.MediaScannerBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.MEDIA_SCANNER_FINISHED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
...
Java ファイル:
package com.example.newgalleryimagereceivertest;
...
public class MediaScannerBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
android.util.Log.d("AppLog", "gallery has new images");
}
何らかの理由で、このコードは機能しません...
質問
コードの何が問題になっていますか?
写真を撮った後、broadcastReceiver が呼び出されることはありますか?
それを行う正しい方法は何ですか?
本当に contentObserver を使用してその変更を監視し (このようなものを使用して)、このためだけにアプリを実行し続ける必要がありますか? 私は本当にそうではないことを願っています...