2

我正在开发一个应用程序,在其中显示画廊图像,我使用了设备本机画廊源代码(来自 grep 代码)。在其他设备上一切正常,但我正面临果冻豆版本设备的问题。在深入研究问题后,我发现代码中的一个问题是它没有触发媒体扫描仪的广播事件。

这是代码片段:

private void onResume()
{

    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
    intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
    intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
    intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
    intentFilter.addDataScheme("file");

    BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {

            } else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED)) {
                // SD card unavailable
                rebake(true, false);
            } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_STARTED)) {
                rebake(false, true);
            } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
                rebake(false, false);
            } else if (action.equals(Intent.ACTION_MEDIA_EJECT)) {
                rebake(true, false);
            }
        }
    };
    registerReceiver(mReceiver, intentFilter);
}
4

0 回答 0