Broadcast-广播的接收

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

先看代码

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" />

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

				
时间: 2024-10-13 11:11:06

Broadcast-广播的接收的相关文章

android Broadcast广播消息代码实现

我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("zcd.netanything"); //注册广播 getActivity().registerReceiver(myRece

angularJS 事件广播与接收

发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data); 接收消息: $scope.on(name,function(event,data){ }); 区别: $emit 广播给父controller   $broadcast 广播给子controller broadcast 是从发送者向他的子scope广播一个事件. 这里就是ParentController发送, ParentController 和 ChildContr

安卓开发笔记——Broadcast广播机制(实现自定义小闹钟)

什么是广播机制? 简单点来说,是一种广泛运用在程序之间的传输信息的一种方式.比如,手机电量不足10%,此时系统会发出一个通知,这就是运用到了广播机制. 广播机制的三要素: Android广播机制包含三个要素:广播(Broadcast) - 用于发送广播:广播接收器(BroadcastReceiver) - 用于接收广播:意图(Intent)-用于保存广播相关信息的媒介. 可以把它理解成我们的传统电视台,我们的电视就是一个广播接收器,然而电视有很多频道,是由电视台发送出来的,也就是广播了,意图可以

Android 启动Service服务和发送Broadcast广播的常用方法

一.先说Service服务. 1.利用setAction()方法来指定启动的Service服务 1 Intent intent = new Intent(); 2 intent.setAction("ServiceAction"); 3 startService(intent); 2.使用Intent的构造函数类添加Activity内容 1 Intent intent = new Intent("ServiceAction"); 2 startService(int

跨应用(跨进程)发送广播和接收广播

跨应用发送和接收广播,与同应用下的情况差不多,只需要添加一个权限,以及配置一下receiver的android:process属性即可 发送广播的应用中: Java代码   Intent intent = new Intent("info.zhegui.receiver.interprocess"); sendBroadcast(intent); 注意要在manifest.xml添加接收广播的权限,这个权限是receiver自定义的 Java代码   <uses-permissi

操作中按了home键后广播为什么接收不了问题

最近在做的USB文件浏览器对于空文件夹的情况会弹出“文件为空,请返回”的dialog.但是在点开空文件夹之前若按下home键后,再启动器usb的app,就会出现文件为空,请返回”的dialog不会弹出. 定位发现是该广播并未接收到. 广播是在oncreate方法里面注册的,原因为home键按下以后,再次按回来时广播并没有注册,因此接收不到空文件发出的消息,因此不弹框. 解决方法:再次按下home键以后启用了activity的onrestart方法,将注册广播的片段在onrestart方法里面再次

broadcast广播

普通广播 创建一个广播接收器 class broadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("Ma", "广播"); }} 新建一个广播发送器 Intent intent = new Intent(); intent.setAction("com.xiazdong"); send

从零开始学android&lt;BroadCast广播.四十五.&gt;

与Service相似,在android中还有一种运行在后台的4大组件之一,他就是broadCcast,但是他不用考虑是否有接受的对象,只需要考虑发送即可. 要想使用BroadCast我们可以使用两种方法 第一:将broadCcast配置到配置文件当中. 第二:将broadCcast与class文件进行绑定. 下面我们分别来进行说明. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android基础:broadcast广播简单实例

main.xml <RelativeLayout 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:

Broadcast广播代码例子

一.最基础自定义广播接收 1.MainActivity 代码 public class MainActivity extends Activity implementsOnClickListener { private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a