BroadcastReceiver广播事件

来源:互联网 发布:网络封包登入 编辑:程序博客网 时间:2024/04/29 09:45

1、广播有两种注册配置方法:

第一种:在代码中配置注册广播`IntentFilter inf = new IntentFilter();inf.addAction("cm.example.android5module_broadcastreceiver_action");registerReceiver(new ActivityReceiver(), inf);//注册接收器registerReceiver(br, inf);//注册接收器


第二种:在配置文件中配置广播

<receiver    android:name=".ActivityReceiver"    >    <intent-filter >        <action android:name="cm.example.android5module_broadcastreceiver_action"/>    </intent-filter></receiver>

`

2、发送广播:
`

Intent intent = new Intent();intent.setAction("cm.example.android5module_broadcastreceiver_action");sendBroadcast(intent);


3、MainActivity代码如下:

import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    Button bt;    TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        bt = (Button)this.findViewById(R.id.button);        tv = (TextView)this.findViewById(R.id.textview);        //处理广播发过来的数据        ActivityReceiver.handler = new Handler(){            public void handleMessage(Message msg) {                if(msg.what == 0x112){                    tv.append(msg.obj.toString());                }            }        };        //广播做出的反应,也可单独放在一个类中。放在本类中只能为代码配置的广播做出反应。因为配置文件里配置的广播要求是单独的类。        final BroadcastReceiver br = new BroadcastReceiver(){            @Override            public void onReceive(Context context, Intent intent) {                if(intent.getAction().equals("cm.example.android5module_broadcastreceiver_action")){                    String str = "Yes";                    Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();                }            }        };        bt.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View v) {                //第一种:代码中注册广播                IntentFilter inf = new IntentFilter();                inf.addAction("cm.example.android5module_broadcastreceiver_action");                registerReceiver(new ActivityReceiver(), inf);//注册接收器                registerReceiver(br, inf);//注册接收器                //第二种:在配置文件Manifest.xml中配置receiver                /*                 *  <receiver                        android:name=".ActivityReceiver"                        >                        <intent-filter >                            <action android:name="cm.example.android5module_broadcastreceiver_action"/>                        </intent-filter>                    </receiver>                 * */                //发送广播                Intent intent = new Intent();                intent.setAction("cm.example.android5module_broadcastreceiver_action");                sendBroadcast(intent);                          }        });    }}


4、ActivityReceiver代码如下:

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Handler;import android.os.Message;public class ActivityReceiver extends BroadcastReceiver{    public static Handler handler;    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();        if(action.equals("cm.example.android5module_broadcastreceiver_action")){            Message msg = new Message();            msg.what = 0x112;            msg.obj = "alreadyreceiver";            handler.sendMessage(msg);        }       }}


5、activity_main.xml如下:

<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"    >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/button"        android:text="发送广播"        />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world"         android:id="@+id/textview"        /></LinearLayout>

`

0 0
原创粉丝点击