兩個app間傳送廣播(動態)

Corecolder發表於2016-05-25

需求:兩個app間傳送廣播

在兩個app間傳送廣播和正常傳送廣播其實差不多。
新建兩個android專案,專案name為test1,test2。需求:在test2中發廣播,在test1中接受廣播。

一,test1部分

先建立一個java類繼承BroadcastReceiver類,用來在 onReceive()方法中處理獲得的廣播。

public class MyReceiver extends  BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        當test2傳送廣播後,在這裡接受並處理收到的廣播。

    }
}  

在java程式碼中動態註冊,程式碼如下:

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("你接受的action");
        myReceiver = new MyReceiver();
        registerReceiver(myReceiver, intentFilter2);

這裡我多提一下,當有多個action要接受,比如你接受一個app傳送的廣播,又接受一個系統的廣播,這時需註冊兩次,不然可能會接收不到全部的廣播。程式碼如下:

        IntentFilter intentFilter1 = new IntentFilter();
        intentFilter1.addAction("你接受的action1");
        IntentFilter intentFilter2 = new IntentFilter();                                
        intentFilter2.addAction("你接受的action2");
        myReceiver = new MyReceiver();
        registerReceiver(myReceiver, intentFilter1);
        registerReceiver(myReceiver, intentFilter2);

不要忘記釋放註冊的廣播,一般在ondestory()方法中釋放:程式碼如下:

@Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceiver);
    }

二, test2部分

在java程式碼中傳送廣播,傳送的action與test1中接受到的action要一致,程式碼如下:

        Intent intent = new Intent();
        intent.setAction("你傳送的action");
        this.sendBroadcast(intent);

相關文章