<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送广播消息 " />
</LinearLayout>
BroadcastRecevice的界面设计,拖选一个Textview和两个Button
ackage com.example.broadcastreceviewerdemo; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); final EditText et=(EditText) findViewById(R.id.editText1); Button btn=(Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent("com.example.broadcastreceviewerdemo"); intent.putExtra("message",et.getText().toString()); sendBroadcast(intent); } }); } }
在主类中给界面中的按钮添加监听事件。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcastreceviewerdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.broadcastreceviewerdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".broadcastReceviewer"></receiver> </application> </manifest>
为了能够使应用程序中的BroadcastRecevice接受指定的广播消息,首先要在AndroidManifest.xml文件中的BroadcastRecevice节点下添加Intent过滤器,声明
BroadcastRecevice可以接受的广播消息类型。
package com.example.broadcastreceviewerdemo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public abstract class MyBroadcastreceviewerdemo extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String msg=intent.getStringExtra("message"); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } }代码第一行首先继承了
BroadcastRecevice类,并在第三行重载了onReveive()函数。当接收到
AndroidManifest.xml文件定义的广播消息后,程序将自动调用onReveive()函数进行消息处理。