Android BroadcastReceiver не может получать какие-либо события трансляции

Я создал 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()); } } 

Solutions Collecting From Web of "Android BroadcastReceiver не может получать какие-либо события трансляции"

Intent javadoc указывает другое значение action: name. Используйте "android.intent.action.MEDIA_MOUNTED" вместо "android.content.Intent.ACTION_MEDIA_MOUNTED"

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

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

Ссылка: андроид-разработчик thread

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

 IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_MEDIA_MOUNTED); filter.addAction(Intent.ACTION_MEDIA_REMOVED); filter.addDataScheme("file"); mContext.registerReceiver(mExternalStorageReceiver, filter);