Android:动态注册BroadcastReceiver

注释直接写在代码里,比较直观,我觉得这些定义系统的广播的宏,不是很好使;

MainActivity.java:

package com.vrinux.broadcastdemo;

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.widget.Toast;

public class MainActivity extends Activity {

    //定义一个过滤器;
    private IntentFilter intentFilter;

    //定义一个广播监听器;
    private NetChangReceiver netChangReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

        //实例化过滤器;
        intentFilter = new IntentFilter();
        //添加过滤的Action值;
        intentFilter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);

        //实例化广播监听器;
        netChangReceiver = new NetChangReceiver();

        //将广播监听器和过滤器注册在一起;
        registerReceiver(netChangReceiver, intentFilter);
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();

        //销毁Activity时取消注册广播监听器;
        unregisterReceiver(netChangReceiver);
    }

    //创建一个继承BroadcastReceiver的广播监听器;
    class NetChangReceiver extends BroadcastReceiver {

        //重写onReceive方法,该方法的实体为,接收到广播后的执行代码;
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            Log.i("MainActivity", "飞行模式启动~");

            Toast.makeText(MainActivity.this, "飞行模式启动~", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}
时间: 2024-08-01 07:51:10

Android:动态注册BroadcastReceiver的相关文章

动态注册BroadcastReceiver

1. [代码][Java]代码 package com.zjt.innerreceiver; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import

Android:静态注册BroadcastReceiver

动态注册的广播接收器可以自由地控制注册与注销,在灵活性方面有很大的优势,但是它也存在着一个缺点,即必须要在程序启动之后才能接收到广播,因为注册的逻辑是写在onCreate()方法中的.那么有没有什么办法可以让程序在未启动的情况下就能接收到广播呢?这就需要使用静态注册的方式了. 下面附上静态注册的代码: MainActivity.java: package com.example.staticbroadcastreceiverdemo; import android.app.Activity; i

android动态注册广播监听服务demo

服务类,一定要在清单文件中注册 public class lightService extends Service { private boolean ifrun = false; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); System.

android动态注册监听网络变化异常

在使用广播接收器监听网络变化的时候,在AndroidManifest.xml中加入<user-permission android:name="android.permission.ACCESS_NETWOEK_STATE"/>还是无法启动应用程序,显示如下异常 07-06 00:03:22.568 22393-22393/? E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.lvkui.helloworld3, PI

Android 广播接收者 BroadcastReceiver

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通信. 从实现原理看上,Andro

Android学习笔记(十一)BroadcastReceiver动态注册、注销示例

在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承BroadcastReceiver,既然要动态注册该receiver的话,就无需在AndroidManifest.xml中配置它了: 1 public class MyReceiver extends BroadcastReceiver { 2 public static final String AC

BroadcastReceiver 的动态注册和静态注册问题

最近开发的小项目涉及到notification通知栏的交互问题,通知栏的各种点击事件响应通过使用broadcast实现,由于一开始没有想到使用handler提交通知栏执行后的状态或者说是信息.一直纠结与怎么注册broadcast的问题,这里先说一下注册的事情. 众所周知,注册可以在manifest.xml里面注册,还有就是在代码里面注册. 在manifest里面的注册形式是这样子的: <receiver android:name=".继承broadcastReceiver的class&qu

Android 系统广播动态注册

package com.broadcasttest; 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.view.View;

BroadcastReceiver的使用,动态注册和注销,优先级和中断控制

BroadcastReceiver: BroadcastReceiver(广播接收器)是Android中的四大组件之一,用来通知某些事件的相关信息,如下载完成,设置改变等. 默认的BroadcastReceiver状态(新建完未更改任何设置)的简单使用方法: 1.通过new Intnet(MainActivity.this,MyReceiver.class)来启动指明的广播对象,(当manifests中注册了此BroadcastReceiver才能通过这种方法启动) 2.Intent可以通过in