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

<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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值