广播发送:
sendBroadcast(new Intent(this,MyReceiver.class));
发送数据:
Intent i = new Intent(this,MyReceiver.class);
i.putExtra("data","你中彩票了!!");
sendBroadcast(i);
接收数据:
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接收到这条信息的内容是:" + intent.getStringExtra("data"));
}
广播注册有两种:
第一种在AndroidManifest.xml中注册:
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
</receiver>
第一种在MainActivity.java中动态注册:
MyReceiver receiver = new MyReceiver();
registerReceiver(receiver,new IntentFilter(MyReceiver.action));
注册与注销:
case R.id.btnReg:
if (receiver == null){
receiver = new MyReceiver();
registerReceiver(receiver,new IntentFilter(MyReceiver.action));
}
break;
case R.id.btnUnReg:
if (receiver != null){
unregisterReceiver(receiver);
receiver = null;
}
break;
同时注册启动两个广播:
在AndroidManifest.xml:
<receiver android:name=".MyReceiver">
<intent-filter android:priority="10">
<action android:name="com.example.broadcastreceive.intent.action.MyReceive" />
</intent-filter>
</receiver>
<receiver android:name=".MyReceiver2">
<intent-filter android:priority="17">
<action android:name="com.example.broadcastreceive.intent.action.MyReceive" />
</intent-filter>
</receiver>
在MainActivity.java:
Intent i = new Intent(MyReceiver.action);//隐式
i.putExtra("data","你中彩票了!!");
sendOrderedBroadcast(i,null);
在MyReceiver:
public class MyReceiver extends BroadcastReceiver {
public static final String action = "com.example.broadcastreceive.intent.action.MyReceive";
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("MyReceive接收到的数据是:" + intent.getStringExtra("data"));
}
}