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