在这里给大家分享安卓四大组件之一Broadcastreceiver(广播)的学习,在这里今天做一个同一部手机上APP之间的广播发送和接收.
首先第一个App用于发送广播出去给其余的App,布局采用一个文本域和一个button按钮,当我点击按钮时进行发送,代码如下:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入问候的语句"
android:id="@+id/main_text_edit"/>
<Button
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:text="发送"
android:onClick="send"
/>
当我点击发送的时候调用当前布局Activity的send方法进行广播的发送,代码如下:
private Intent intent;
private EditText main_text_edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取文本域控件
main_text_edit = (EditText) findViewById(R.id.main_text_edit);
//实力化
intent = new Intent();
//给Intent设置一个特定的广播名字(专业术语是给Activity设置一个行为);
intent.setAction("com.example.android_broadcastreceiver.01");
}
public void send(View view){
//获取文本域控件的值
String data=main_text_edit.getText().toString();
//使用Intent携带
intent.putExtra("data",data);
//发送广播
sendBroadcast(intent);
}
那么发送广播就是这样,现在来写一个接收广播的App,由于写一个简单点的接收App布局和MainActivity都是创建的那样不做改动,只是增加一个类继承BroadcastReceiver类,然后重写它的一个onReceive方法,这个方法就是接收广播,代码如下:
public void onReceive(Context context, Intent intent) {
if("com.example.android_broadcastreceiver.01".equals(intent.getAction())){
String data=intent.getStringExtra("data");
Log.i("text",data);
}
}
在这里的判断中字符串的值是在第一个发送广播App中Intent行为的值也就是广播的名字,当你名字等于我接收广播的名字时那么就会进入判断。
在这里要注意一下Android清单文件中要增加几行代码,如下:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.example.android_broadcastreceiver.01"></action>
</intent-filter>
</receiver>
这代码加在application标签中,android:name=我们自己定义继承BroadcastReceiver的类名。
今天分享的广播就是这样了,注意只能在同部手机上App之间的广播传递。