根据自定义数据过滤意图

Jim*_*mmy 7 android android-intent

我想用自定义数据广播意图,只有拥有此自定义数据的接收者应该接收这个意图,如何做到这一点?

这是我如何广播意图:

Intent intent = new Intent();
 intent.setAction("com.example");
 context.sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

我定义广播接收器如下:

 <receiver android:name="com.test.myReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="com.example"></action>
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

Muh*_*lah 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
Run Code Online (Sandbox Code Playgroud)

如果您销毁活动/服务,为了最佳实践,请不要忘记在同一活动/服务上取消注册广播接收器:

@Override
protected void onDestroy() {
    if(myReceiver!=null)
        unregisterReceiver(myReceiver)
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

我的接收器类:

public class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent intent) {
        if(intent.getAction().equals("com.example")){
            //DO SOMETHING HERE
        }
    }
}
Run Code Online (Sandbox Code Playgroud)