Android BroadcastReceiver не может принимать события трансляции - PullRequest
10 голосов
/ 15 июня 2009

Я создал BroadcastReceiver для обнаружения подключения и отключения SDCard событие, однако, я не могу получать какие-либо события вообще: вот AndroidManifest.xml:

<receiver android:enabled="true" android:label="SDCardMountReceiver" android:exported="true" android:name="xxx.broadcasts.SDCardBroadcastReceiver">
    <intent-filter>
        <action android:name="android.content.Intent.ACTION_MEDIA_MOUNTED"></action>
        <!-- or <action android:name="android.content.Intent.ACTION_MEDIA_UNMOUNTED" />--></intent-filter>
</receiver>

И класс SDCardMountReceiver:

public class SDCardBroadcastReceiver extends BroadcastReceiver {
    public SDCardBroadcastReceiver() {
        super();
        System.err.println("constructor");
    }

    public void onReceive(Context context, Intent intent) {
        Log.d("SDCardBroadCastReceiver", "receive " + intent.getAction());
        System.err.println("jonathan receive " + intent.getAction());

    }
}

Ответы [ 3 ]

45 голосов
/ 05 сентября 2009

Вам также необходимо установить схему данных в «файл».

   <intent-filter>
     <action android:name="android.intent.action.MEDIA_MOUNTED" />
     <data android:scheme="file" /> 
   </intent-filter>

Ссылка: Тема для Android-разработчиков

4 голосов
/ 19 ноября 2013

Если вы регистрируете широковещательный приемник программно, вы также должны установить схему на «файл».

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addDataScheme("file");
mContext.registerReceiver(mExternalStorageReceiver, filter);
4 голосов
/ 15 июня 2009

Javadoc Intent определяет другое действие: имя значения. Используйте «android.intent.action.MEDIA_MOUNTED» вместо «android.content.Intent.ACTION_MEDIA_MOUNTED»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...