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);

以上都不起作用。

我的代码有什么问题?我可以看到每次复制新图像时,它都会显示在 Gallery App 中。它可能正在使用内容观察器来观看媒体存储数据库,我不想这样做。

我只想在通过 MTP 将新图像添加到设备存储时收到通知。既然添加到媒体商店,必须由媒体扫描仪完成,为什么我的应用程序无法捕获广播意图?如果这甚至不正确,我想知道我作为标题发布的答案。

4

0 回答 0