Android之BroadcastReceiver组件
一、 定义
二 、广播的接收
1 public class Receiver extends BroadcastReceiver { 2 @Override 3 public void onReceive(Context context, Intent intent) { 4 // TODO Auto-generated method stub 5 Bundle bundle=intent.getExtras(); 6 } 7 8 }
1 <receiver android:name="com.example.receiver.Receiver"> 2 <intent-filter android:priority="1000"> 3 <action android:name="android.intent.action.ACTION_SHUTDOWN"/> 4 </intent-filter> 5 </receiver>
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 6 receiver = new Receiver(); 7 IntentFilter filter=new IntentFilter("com.broadcast.ORDER"); 8 filter.setPriority(1000); 9 registerReceiver(receiver, filter); 10 } 11 12 @Override 13 protected void onDestroy() { 14 // TODO Auto-generated method stub 15 super.onDestroy(); 16 unregisterReceiver(receiver); 17 }
三、发送广播
1 Intent intent=new Intent("com.broadcast.NORMAL"); 2 sendBroadcast(intent,null);
1 Intent intent=new Intent("com.broadcast.ORDER"); 2 intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);//包含从未启动过的程序(3.1以后默认不包含),也可以不写 3 sendOrderedBroadcast(intent,null);//不指定权限,赋值为null
四、发送广播时传递数据
intent.putExtra("data","添加数据");
获取各自对应的数据
intent.getStringExtra("data");
b、ResultAPI传递数据,有序广播可以使用ResultAPI传递数据
1 Bundle bundle=new Bundle(); 2 bundle.putString("name","张三"); 3 bundle.putInt("age",21); 4 sendOrderedBroadcast(intent,null,null,null,1,"MainActivity",bundle);
获取各自的数据
1 int code=getResultCode();//结果数据中的int型参数 2 String data=getResultData();//结果数据中String型参数 3 Bundle bundle=getResultExtras(true); //结果数据中的bundle,若之前的操作结果数据bundle改为null,表示前面没有bundle集合true就会返回一个new Bundle(),创建一个集合,false的话则返回null,因为之前就没有bundle集合
1 bundle.putString("name","王族"); 2 bundle.putInt("age",25); 3 setResult(6,"Paris",bundle);//修改Result数据,后面的接收者将收到这个修改后的数据
五、中断广播(有序广播中可操作)
六、广播权限
接收端必须持有发送端的权限才可以接收这个广播
<permission/>声明权限---在发送端声明这个权限
<uses-permission/>使用权限---在接收端使用这个权限才可以收到广播
b、接收端要求发送端的权限
在<receiver/>标签中指定android:permission=""权限,发送端必须有这个权限,接收端才会接收它的广播;若无权限,接收端不接收广播
七、生命周期
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。