在这里给大家分享安卓四大组件之一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之间的广播传递。
新闻热点
疑难解答