1-新建广播接收器
MyBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"received in MyBroadcastReceiver",Toast.LENGTH_SHORT).show();
}
}
com.example.broadcasttest包-New-Other-Broadcast Receiver
采用上述过程可自动在AndroidManifest.xml中注册
<receiver android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcasttest.MY_BROADCAST" />
</intent-filter>
</receiver>
通过android:name指定具体注册哪个广播接收器
android:enabled表示是否启用这个接收器
android:exported表示是否允许接收本程序以外的广播
AndroidManifest.xml中intent-filter的action name
<action android:name="com.example.broadcasttest.MY_BROADCAST" />
需与发送的广播的intent的name一致
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST") ;
2-按键发送广播
改变MainActivity中的代码,设置按键触发,在 sendBroadcast(intent)方法之前,用intent 对象调用一下 setComponent( new ComponentName(’‘参数一’’,’‘参数二’’)) 参数一是你的包名(com.example.broadcasttest),
参数二是你的接收器的路径(广播接收器MyBroadcastReceiver.java的具体路径–com.example.broadcasttest.MyBroadcastReceiver)。
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST") ;
intent.setComponent(new ComponentName("com.example.broadcasttest",
"com.example.broadcasttest.MyBroadcastReceiver")) ;
sendBroadcast(intent);
}
});