广播发送与接受的两种方式

来源:互联网 发布:linux vi 怎么查找 编辑:程序博客网 时间:2024/06/05 04:48
<p style="margin: 10px auto;">第一种在JAVA代码中注册接收端:</p>
</pre><pre name="code" class="html">
package com.zzw.broadcast;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.util.Log;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity {    final String action = "com.zzw";    BroadcastReceiver mBroadcastReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();        // 点击按钮发送广播        findViewById(R.id.button).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // 发送广播                Intent intent = new Intent();                intent.setAction(action);                intent.putExtra("name", "zzw");                MainActivity.this.sendBroadcast(intent);                Log.e("发送广播的状态-----","发送成功");            }        });    }    // 注册接收端    private void init() {        mBroadcastReceiver = new TestBroadcastReceiver();        IntentFilter filter = new IntentFilter(action);// 过滤        registerReceiver(mBroadcastReceiver, filter);    }    private class TestBroadcastReceiver extends BroadcastReceiver {        // 接收广播        @Override        public void onReceive(Context context, Intent intent) {            Log.e("接受广播的状态-----", "收到广播");            Log.e("收到的action-----", intent.getAction());            Log.e("收到的name-------", intent.getExtras().getString("name"));        }    }    // 关闭广播    @Override    protected void onDestroy() {        if (mBroadcastReceiver != null) {            unregisterReceiver(mBroadcastReceiver);        }        super.onDestroy();    }}

第二种在AndroidManifest中注册接收端:

发送的代码:

package com.zzw.broadcast2;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity {    String action = "com.zzw";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(action);                intent.putExtra("name", "zzw");                MainActivity.this.sendBroadcast(intent);                Log.e("发送的状态-----", "发送成功");            }        });    }}

接收的代码:


package com.zzw.broadcast2;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class TestReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        Log.e("接收的状态-----", "接受成功");        Log.e("接受到的action---", intent.getAction());        Log.e("接受到的name-----", intent.getExtras().getString("name"));    }}

AndroidManifest中注册接收端代码:在application中,与activity同级


<receiver android:name="com.zzw.broadcast2.TestReceiver" >            <!-- 过滤器 -->            <intent-filter>                <action android:name="com.zzw" />            </intent-filter>        </receiver>



0 0
原创粉丝点击