利用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);
}
}
}