我想用自定义数据广播意图,只有拥有此自定义数据的接收者应该接收这个意图,如何做到这一点?
这是我如何广播意图:
Intent intent = new Intent();
intent.setAction("com.example");
context.sendBroadcast(intent);
我将广播接收器定义如下:
<receiver android:name="com.test.myReceiver" android:enabled="true">
<intent-filter>
<action android:name="com.example"></action>
</intent-filter>
</receiver>
答案 0 :(得分:2)
基本上如何设置你的myReceiver课程。
public class myReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent intent) {
//Do something
}
}
您不必检查Intent操作,因为您已根据清单中包含的内容对其进行了过滤,至少在这种简单的情况下。您可以使用其他操作和过滤器,在这种情况下,您需要对收到的意图进行某种检查。
如果您希望过滤器对数据进行过滤,则有关intent过滤器的sdk文档会涵盖这些内容。我对数据类型不是很好,所以我给的任何例子都会比较差。无论如何,这里是清单意图过滤页面的链接: http://developer.android.com/guide/topics/manifest/intent-filter-element.html
数据元素的具体页面; http://developer.android.com/guide/topics/manifest/data-element.html
答案 1 :(得分:0)
如果您已经定义了广播接收器类,那么下一步就是在您希望接收广播意图的活动/服务上注册它。注册的一个例子:
IntentFilter iFilter = new IntentFilter();
iFilter.addAction("com.example"); //add your custom intent to register
//below is your class which extends BroadcastReceiver, contains action
//which will be triggered when current class received the broadcast intent
MyReceiver myReceiver = new MyReceiver();
registerReceiver(myReceiver, iFilter); //register intent & receiver
如果您销毁活动/服务,为了获得最佳实践,请不要忘记在同一活动/服务上取消注册广播接收器:
@Override
protected void onDestroy() {
if(myReceiver!=null)
unregisterReceiver(myReceiver)
super.onDestroy();
}
MyReceiver类:
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent intent) {
if(intent.getAction().equals("com.example")){
//DO SOMETHING HERE
}
}
}