欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

动态注册BroadcastReceiver,broadcastreceiver

来源: 开发者 投稿于  被查看 925 次 评论:187

动态注册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.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();    
            filter.addAction(action);        
            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");
        	}
             
        }    
            
    }    
}

用户评论