没有得到SD卡相关的意图到我的广播接收器

Sum*_*man 7 android sd-card

我正在尝试注册接收器以删除SD卡,但我的接收器没有被要求删除sd卡粘贴我的代码.我在oncreate()中注册接收器并在ondestroy函数中取消注册.如果我有任何错误,请告诉我.

void registerSDCardStateChangeListener() {
    final String MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
    final String MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
    final String MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL";
    //      final String MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
    final String MEDIA_EJECT = "android.intent.action.MEDIA_SCANNER_FINISHED";

    mSDCardStateChangeListener = new BroadcastReceiver() {

        @
        Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equalsIgnoreCase(MEDIA_REMOVED) || action.equalsIgnoreCase(MEDIA_UNMOUNTED) || action.equalsIgnoreCase(MEDIA_BAD_REMOVAL) || action.equalsIgnoreCase(MEDIA_EJECT)) {
                if (mMediaPlayer != null) {
                    stopPlayBack();
                }
            }
        }
    };

    IntentFilter filter = new IntentFilter();
    filter.addAction(MEDIA_REMOVED);
    filter.addAction(MEDIA_UNMOUNTED);
    filter.addAction(MEDIA_BAD_REMOVAL);
    filter.addAction(MEDIA_EJECT);
    registerReceiver(mSDCardStateChangeListener, filter);
}
Run Code Online (Sandbox Code Playgroud)

如果我的代码有任何问题,请告诉我.

Jus*_*ler 25

尝试将此添加到您的intent-filter

filter.addDataScheme("file");
Run Code Online (Sandbox Code Playgroud)

您尝试捕获的操作似乎将路径作为intent的数据字段发送.如果是这种情况,那么您的intent过滤器必须具有匹配方案.

最后,这只是一个建议,但我建议您使用Intent类中的常量,而不是手动输入您的操作.IE,使用Intent.ACTION_MEDIA_REMOVED而不是直接使用字符串.