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.util.Log;
 
public class ServiceTest extends Service{
 
public final static String TAG = "ServiceTest";
 
private Receiver mReceiver;
 
@Override
public IBinder onBind(Intent arg0) {
return null;
}
 
@Override
public void onCreate() {
super.onCreate();
//注册Receiver
mReceiver = new Receiver(this);  
mReceiver.registerActionAndScheme(Intent.ACTION_MEDIA_EJECT, "file"); 
mReceiver.registerActionAndScheme(Intent.ACTION_MEDIA_REMOVED, "file"); 
mReceiver.registerActionAndScheme(Intent.ACTION_MEDIA_MOUNTED, "file"); 
mReceiver.registerActionAndScheme(Intent.ACTION_PACKAGE_REMOVED, "package"); 
                mReceiver.registerActionAndScheme(Intent.ACTION_PACKAGE_ADDED, "package");
}
 
@Override
public void onDestroy() {
super.onDestroy();
//注销Receiver
unregisterReceiver(mReceiver);  
}
 
 
 
class Receiver extends BroadcastReceiver {    
        
Context mContext;    
  
        public Receiver(Context context){    
            mContext = context;    
        }    
            
        //动态注册  
        public void registerAction(String action){    
            IntentFilter filter = new IntentFilter();    
            filter.addAction(action);        
            mContext.registerReceiver(this, filter);    
        }  
        
        public void registerActionAndScheme(String action, String dataScheme){    
            IntentFilter filter = new IntentFilter();   http://www.huiyi8.com/css3/ 
            filter.addAction(action);      css3教程
            filter.addDataScheme(dataScheme);
            mContext.registerReceiver(this, filter);    
        } 
            
        @Override    
        public void onReceive(Context context, Intent intent) {    
         String action = intent.getAction();
         Log.d(TAG, "action:" + action);
        
         if(action.equals(Intent.ACTION_MEDIA_EJECT)) {
         Log.d(TAG , "sdcard has been ejected");
         } else if (action.equals(Intent.ACTION_MEDIA_REMOVED)) {
         Log.d(TAG , "sdcard has been removed");
         } else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
         Log.d(TAG , "sdcard has been mounted");
         } else if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) {
         Log.d(TAG, "Intent.ACTION_PACKAGE_REMOVED");
         } else if (action.equals(Intent.ACTION_PACKAGE_ADDED)) {
         Log.d(TAG, "Intent.ACTION_PACKAGE_ADDED");
         }
             
        }    
            
    }    
}

动态注册BroadcastReceiver的更多相关文章

  1. 某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法

    在某APK中,通过如下方法动态注册了一个BroadcastReceiver,代码参考如下: @Override protected void onAttachedToWindow() { super. ...

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

    在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承Br ...

  3. Android(java)学习笔记173:BroadcastReceiver之 静态注册 和 动态注册

    1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...

  4. BroadcastReceiver的两种注册方式之------动态注册

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  5. BroadcastReceiver(广播)的静态注册和动态注册 --Android开发

    BroadcastReceiver是安卓四大组件之一,本例通过代码的方式演示静态注册和动态注册. 1.静态注册 静态注册只需要AndroidManifest.xml中进行配置: AndroidMani ...

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

    BroadcastReceiver: BroadcastReceiver(广播接收器)是Android中的四大组件之一,用来通知某些事件的相关信息,如下载完成,设置改变等. 默认的BroadcastR ...

  7. Android(java)学习笔记116:BroadcastReceiver之 静态注册 和 动态注册

    1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...

  8. BroadcastReceiver register 广播的动态注册方式

    1.动态注册方式特点:在代码中进行注册后,当应用程序关闭后,就不再进行监听. 下面是具体的例子: BroadcastTest.java package com.czz.test; import and ...

  9. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

随机推荐

  1. Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件)

    如果Eclipse中出现User setting file does not exist ...\.m2\setting.xml这样的问题,解决方法如下: 1.拷贝%M2_HOME%/conf/set ...

  2. win7 32位安装pyqt

    参考 http://blog.csdn.net/fairyeye/article/details/6607981 http://www.cnblogs.com/toSeek/p/6363036.htm ...

  3. 前端模板inspinia

    前端模板,可以下个免费的,可以花点小钱买.或者github搜索一个 https://chuibility.github.io/inspinia/ http://cn.inspinia.cn/layou ...

  4. Delphi TScrollBar 用于滚动窗口、组件内容

    滚动条组件(TScrollBar)此组件是一个Windows滚动条,用于滚动窗口.组件内容.许多控制有滚动条属性,它们把滚动条作为自己的一部分,对于没有完整滚动条的控制,TScrollBar组件提供了 ...

  5. python 使用cx-freeze打包程序

    python环境 3.6.5      win7   linux环境同理 先尝试了PyInstaller   ,打包时一直提示 no module named gtk   而gtk 又依赖pygobj ...

  6. Opencv 最小外接矩形合并拼接

    前一篇画出了最小外接矩形,但是有时候画出来的矩形由于中间像素干扰或者是其他原因矩形框并不是真正想要的 如图1是一个信号的雨图,被矩形框分割成了多个小框: 需要合并矩形框达到的效果: 主要思想: 扫描两 ...

  7. python读取txt、csv和excel文件

    一.python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容) fp = open('test.txt','r') lines = fp.readlines() fp.clo ...

  8. OpenGL之路(七)为立方体加入丰富色彩

    在立方体的六个面贴上不同的颜色,假设想达到混合颜色的效果,能够參照立方体的前面代码在每一行前都加上颜色 代码例如以下 #include <gl/glut.h> #pragma commen ...

  9. jsp中获取spring 管理的bean(通过config)

    WebApplicationContext wac = (WebApplicationContext)config.getServletContext().getAttribute(WebApplic ...

  10. C++静态库与动态库深入研究

    什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操 ...