Android的广播接收器无法接收任何广播事件
-
13-09-2019 - |
题
我已创建一个BroadcastReceiver检测SD卡装载和卸载 事件,但是,我不能在所有接收任何事件: 这里的的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());
}
}
解决方案
在意图的Javadoc指定不同的动作:名称值。 用 “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>
参考:机器人的显影剂线程
如果编程注册的广播接收机,还必须设置方案为“文件”。
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addDataScheme("file");
mContext.registerReceiver(mExternalStorageReceiver, filter);
不隶属于 StackOverflow