Android使用Broadcast實現無序靜態與動態廣播功能

利用sendBroadcast()實現發送廣播,BroadcastReceiver 接收廣播

實例Damo

效果:

發送者:


接收打印:



一個發送者,給兩個接收者發送廣播,一個靜態獲取一個動態獲取

發送者:

xml文件中:

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="請輸入要發送的內容"
        android:id="@+id/et_main_content"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="發送"
        android:onClick="send"
        />
MainActivity中:

public class MainActivity extends AppCompatActivity {

    private EditText et_main_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //獲取文本輸入控件
        et_main_content = (EditText) findViewById(R.id.et_main_content);
    }

    public void send(View view){
        //獲得發送的內容
        String content=et_main_content.getText().toString();
        //發送廣播
        Intent intent=new Intent();
        //指定廣播的名字
        intent.setAction("com.example.g160628_android21_sender.Hug");
        //指定廣播的內容
        intent.putExtra("content",content);
        //發送無序廣播
        sendBroadcast(intent);
    }

}


接收者1號(靜態獲取):

在mainfest中,與activity控件同級添加

 <receiver android:name=".MyReceiver01">
            <intent-filter>
                <action android:name="com.example.g160628_android21_sender.Hug"></action>
            </intent-filter>
        </receiver>


實例化一個MyReceiver01.java

public class MyReceiver01 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //獲取廣播的名字
        String action=intent.getAction();
        if("com.example.g160628_android21_sender.Hug".equals(action)){
            String content=intent.getStringExtra("content");
            Log.i("test","廣播接受者1號:"+content);
        }

    }
}

接收者2號(動態獲取):

MainActivity中

public class MainActivity extends AppCompatActivity {

    private MyReceiver02 myReceiver02;
    private IntentFilter intentFilter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myReceiver02 = new MyReceiver02();
        //實例化IntentFilter
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.example.g160628_android21_sender.Hug");
    }

    @Override
    protected void onResume() {
        super.onResume();
        //註冊廣播
        registerReceiver(myReceiver02,intentFilter) ;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //取消註冊 註銷
        unregisterReceiver(myReceiver02);
    }
}
MyReceiver02.java

public class MyReceiver02 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //獲取廣播的名字
        String action=intent.getAction();
        if("com.example.g160628_android21_sender.Hug".equals(action)){
            String content=intent.getStringExtra("content");
            Log.i("test","廣播接受者2號:"+content);
        }

    }
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章