首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

BroadCastReceiver android 播音接收器

2013-03-06 
BroadCastReceiver android 广播接收器??? /intent-filter?? /receiver?两种注册BroadcastReceiver方

BroadCastReceiver android 广播接收器

??? </intent-filter>

?? </receiver>

?

两种注册BroadcastReceiver方法的比较:

现在我们了解了两种注册BroadcastReceiver的方法之后,需要考虑一下这两种方法适用的场合:

?

i. 第一种注册的方法可以保证在应用程序安装之后,BroadcastReceiver始终处于活动状态,通常用于监听系统状态的改变,比如说手机的电量,wifi网卡的状态(当然,监视这些东西也是取决于软件的需求)。对于这样的BroadcastReceiver,通常是在产生某个特定的系统事件之后,进行相应的操作,比如说wifi网卡打开时,给用户一个提示;

?

ii. 第二种注册方法相对第一种要灵活的多,这样注册的BroadcastReceiver通常用于更新UI的状态。一般来说,都是在一个Activity启动的时候使用这样的方法注册BroadcastReceiver,一旦接收到广播的事件,就可以在onReceive方法当中更新当前的这个Activity当中的控件。但是需要注意的是如果这个Activity不可见了,就应该调用unregisterReceiver方法来解除注册

9, 粘性广播有什么作用?怎么使用?

粘性广播主要为了解决,在发送完广播之后,动态注册的接收者,也能够收到广播。举个例子首先发送一广播,我的接收者是通过程序中的某个按钮动态注册的。如果不是粘性广播,我注册完接收者肯定无法收到广播了。这是通过发送粘性广播就能够在我动态注册接收者后也能收到广播。

用法:

//发送粘性广播

Public void sendStickyBroadCast(){

??????? Intent intent=new Intent();

intent.setAction(“com.iteye.myreceiver.action”);

intent.putExtra(“name”,”tom”);

this.sendStickyBroadCast(intent);

?

}

发送粘性广播还需要发送粘性广播的权限:<uses-permission android:name="android.permission.BROADCAST_STICKY" />

//动态注册广播接收者

MyReceiver mr = new MyReceiver ();

IntentFilter filter = new IntentFilter();

filter.addAction("com.iteye.myreceiver.action ");

filter.addCategory(Intent.CATEGORY_DEFAULT);

Intent ii = this.registerReceiver(mr, filter);

String n = ii.getStringExtra("name");

Toast.makeText(this, "动态注册接收者完成,收到粘性广播,name=" + n, 1).show();

10,如何控制接收者或者发送方得权限?

?????? 1)如果广播发送方要求接收方必须有某个权限才能收到广播怎么做呢?

?????? /**

??????? * 发送广播,指定接收者权限

??????? * sendBroadcast(i, "com.iteye.permission.receiver");//指定接收者权限

??????? */

?????? public void sendBroadcast() {

????????????? //隐式意图,发送广播

????????????? Intent i = new Intent();

????????????? i.setAction("com.iteye.receiver.action");

????????????? i.putExtra("name", "tom");

????????????? this.sendBroadcast(i, " com.iteye.permission.receiver ");

????????????? Log.i("Other",".send ok!");

?????? }

?????? 在清单文件里receiver必须有这个权限才能收到广播。

?????? 首先,需要定义权限:<permission android:name=" com.iteye.permission.receiver " />

?????? 然后,声明权限:<uses-permission android:name=" com.iteye.permission.receiver " />

?????? 这时接收者就能收到发送的广播。

?????? 2)反过来,如果接收者要求发送方必须拥有某个权限,我才接收你的广播怎么办呢?

?????? <!-- 注册广播接收者

?????????????? android:permission:控制发送方需要具备指定权限,才接收其广播.

??? -->

???? <receiver android:name=".MyReceiver" android:permission="com.permission.sender">

?????????????? <intent-filter android:priority="100">

????????????????????? <action android:name="com.iteye.receiver.action" />

????????????????????? <category android:name="android.intent.category.DEFAULT" />

?????????????? </intent-filter>

????? </receiver>

?????? 即使过滤器匹配,如果发送方没有相应权限,接收者也不会接收其广播。

热点排行