如何在Android中拦截Intent ACTION_MEDIA_MOUNTED广播?

and*_*scv 5 android broadcastreceiver android-intent android-broadcast

我有一个 Android 应用程序可以处理我的特定存储设备的插件。当设备安装在系统上时,我希望能够通过我的显示活动以特定方式显示存储设备的内容。我遇到的问题是,在某些手机上,系统还会处理ACTION_MEDIA_MOUNTED广播,然后自动启动 Android 文件资源管理器(它将屏幕从我的应用中移开)。如果可能的话,这就是我试图阻止的。我正在注册一个广播接收器来收听ACTION_MEDIA_MOUNTED广播,然后在收到此广播后立即启动我的显示活动,如下所示:

BroadcastReceiver mediaMountedReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Log.d("debug", "HEAR YE! HEAR YE! THE MEDIA HAS BEEN MOUNTED!");
        if (isOrderedBroadcast()) {
            abortBroadcast();
        }
        Intent i = new Intent(getApplicationContext(), Display.class);
        startActivity(i);
    }
};

...

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addDataScheme("file");
filter.setPriority(999);
registerReceiver(mediaMountedReceiver, filter);
Run Code Online (Sandbox Code Playgroud)

我收到广播没问题,我尝试通过调用取消它,abortBroadcast()但显然ACTION_MEDIA_MOUNTED不是有序广播。有什么方法可以阻止此广播的传播或将所有存储挂载/卸载广播定向到我的应用程序?

如果这是不可能的,有没有人有关于如何处理这个问题的提示或解决方法?