ACTION_MEDIA_SCANNER_FINISHED 会发多个
时间: 2023-08-10 11:07:01 浏览: 55
是的,`ACTION_MEDIA_SCANNER_FINISHED` 广播可能会被多次触发,因为系统可能会多次扫描媒体数据库。通常情况下,系统会在 U 盘插入时和 U 盘拔出时扫描一次媒体数据库。此外,如果媒体数据库出现了问题或者被清空,系统也会重新扫描媒体数据库。因此,你需要在广播接收器中进行判断,以确定是不是你所需要的扫描完成广播。
以下是一个示例代码,它会判断当前广播是否是由 U 盘插入导致的媒体库扫描完成广播:
```java
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
// 判断是否是 U 盘插入导致的媒体库扫描完成广播
Uri uri = intent.getData();
if (uri != null && uri.getScheme().equals("file") && uri.getPath().startsWith("/mnt/usb")) {
// U 盘数据扫描到多媒体数据库完成后的回调
// 在这里进行你需要的操作
}
}
}
};
// 在代码中注册广播接收器
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
registerReceiver(mReceiver, filter);
```
在上面的代码中,我们通过判断广播中的 `Intent` 对象的 `data` 字段来确定广播是否是由 U 盘插入导致的媒体库扫描完成广播。如果是,我们就可以执行我们需要的操作。