我正在写一个类似app的画廊。
我希望在通过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将新图像添加到设备存储中时收到通知。由于它被添加到媒体商店,必须由媒体扫描仪完成,为什么我的应用程序无法捕获广播意图?如果这甚至不正确,我想知道我作为标题发布的答案。