Broadcast-广播的接收

本文详细阐述了在Android应用中如何实现广播接收及其关键步骤,包括定义广播接收者、注册广播接收以及授权操作。通过实例代码,展示了如何在手机网络状态变化时接收并处理信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

至于广播的意思,不再赘述,直接看它的使用

先看代码

package com.example.test1123;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;

import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;

import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {
    TextView tv;
    Button bt1;
    Button bt2;
    Button bt3;
    int i = 0;
    MyBroadReceive myBroadReceive;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView)findViewById(R.id.tv);
        bt1 = (Button) findViewById(R.id.bt1);
        bt2 = (Button) findViewById(R.id.bt2);
        bt3 = (Button) findViewById(R.id.bt3);
        myBroadReceive = new MyBroadReceive();
        bt1.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch (arg0.getId()) {
        case R.id.bt1:
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
            registerReceiver(myBroadReceive, intentFilter);
            break;
       case R.id.bt2:
            unregisterReceiver(myBroadReceive);
default: break; } } public class MyBroadReceive extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { tv.setText("click"+i); i++; } }

里面其实就三处关键代码

一个就是定义广播接收者:

         继承自

         MyBroadReceive extends BroadcastReceiver

         接收以后处理,实现

         onReceive

另外一个就是注册广播接收

  这个也是包括两个

    一个就是确定你要接收广播代号(这个其实就是发送者唯一标签,类似波长)

     

      intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

    另外一个就是绑定这个标签跟你定义的接收处理动作

      registerReceiver(myBroadReceive, intentFilter);

 

最后就是广播注销,也就是不再接收广播

nregisterReceiver(myBroadReceive);

当我完成了以上步骤以后,发现还是没有作用,原来还需要最后一步,就是授权了。就像你不能无缘无故就接受到所有的广播一样。授权就在AndroidManifest.xml中添加如下

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

这样就行了。当手机网络发生变化的时候,我们就可以接收到信息了



转载于:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_broad_15626142.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值