0

ギャラリーのようなアプリを書いています。

イメージが MTP 経由でデバイスにコピーされたときに通知を受け取りたいです。

メディア スキャナの終了アクションをリッスンするブロードキャスト レシーバを登録しようとしましたが、呼び出されませんでした。AndroidManifest.xml に登録するか、Java コードに登録しようとしましたが、どちらも機能しません。

<receiver android:name="com.robin.huangwei.omnigif.content.MediaScannerReceiver"
        android:enabled="true" >
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_SCANNER_FINISHED" />
        <data android:scheme="file" />
    </intent-filter>
</receiver>

public class MediaScannerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("-----", "Scan finished, new item: " + intent);
    }

}

または以下のようにJAVAコードを使用する

mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("-----", "Scan finished, new item: " + intent);
    }
};
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_FINISHED);
filter.addDataScheme("file");
registerReceiver(mReceiver, filter);

上記のいずれも機能しません。

私のコードの何が問題なのですか? 新しい画像がコピーされるたびに、ギャラリー アプリに表示されることがわかります。コンテンツ オブザーバーを使用してメディア ストア データベースを監視している可能性がありますが、これは望ましくありません。

新しいイメージが MTP 経由でデバイス ストレージに追加されたときに通知を受け取りたいだけです。メディア スキャナによって実行される必要があるメディア ストアに追加されるため、アプリがブロードキャスト インテントをキャプチャできないのはなぜですか? これでも正しくない場合は、タイトルとして投稿した答えを知りたいです。

4

0 に答える 0