广播接收器(BroadcastReceiver)的使用
来源:互联网 发布:学校屏蔽网络如何破解 编辑:程序博客网 时间:2024/05/16 08:15
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import java.util.ArrayList;import android.content.IntentFilter;import android.net.Uri;import android.os.storage.StorageVolume;public class MountReceiver extends BroadcastReceiver { private static final String TAG="MountReceiver"; private final MountPointManager mMountPointManager; private final ArrayList<MountListener>mMountListenerList=new ArrayList<MountListener>(); private static final String INTENT_SD_SWAP="com.mediatek.SD_SWAP"; public interface MountListener{ /** * This method will be called to do things before MountPoint init. */ //void prepareForMount(String mountPoint); /** * This method will be called when receive a mounted intent. */ void onMounted(String mountPoint); /** * This method will be implemented by its class who implements this interface, * and called when receive a unMounted intent. */ void onUnMounted(StorageVolume volume); /** * This method cancel the current action on the SD card which will be unmounted */ void onEjected(String unMountPoint); /** * This method re-load volume info when sd swap on/off */ void onSdSwap(); } /** * This method gets MountPointManager's instance */ public MountReceiver(){ mMountPointManager=MountPointManager.getInstance(); } /** * This method adds listener for activities * * @param listener listener of certain activity to respond mounted and unMounted intent */ public void registerMountListener(MountListener listener){ mMountListenerList.add(listener); } public void unregisterMountListener(MountListener listener){ mMountListenerList.remove(listener); } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String mountPoint = null; StorageVolume volume = null; Uri mountPointUri = intent.getData(); if (mountPointUri != null) { mountPoint = mountPointUri.getPath(); } LogUtils.d(TAG, "onReceive,handle SD_SWAP"); if(INTENT_SD_SWAP.equals(action)){ synchronized (this){ for(MountListener listener:mMountListenerList){ LogUtils.d(TAG,"onReceive,handle SD_SWAP"); listener.onSdSwap(); } } } if(mountPoint==null || mountPointUri==null){ return; } if(Intent.ACTION_MEDIA_MOUNTED.equals(action)){ //cancel the current operation before MountPointManager init //to avoid concurrently access to mountpoint arraylist. for(MountListener listener:mMountListenerList){ listener.onMounted(mountPoint); } }else if(Intent.ACTION_MEDIA_UNMOUNTED.equals(action)){ volume=(StorageVolume)intent.getExtras(StorageVolume.EXTRAZ_STORAGE_VOLUME); mMountPointManager.changeMountState(mountPoint,false); for(MountListener listener:mMountListenerList){ listener.onUnMounted(volume); } }else if(Intent.ACTION_MEDIA_EJECT.equals(action)){ for(MountListener listener:mMountListenerList){ listener.onEjected(mountPoint); } } } /** * Register a MountReceiver for context.See * {@link Intent.ACTION_MEDIA_MOUNTED}{@link Intent.ACTION_MEDIA_UNMOUNTED} * * @param context Context to use * @return A mountReceiver */ public static MountReceiver registerMountReceiver(Context context){ MountReceiver receiver=new MountReceiver(); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_EJECT); intentFilter.addDataScheme("file"); context.registerReceiver(receiver,intentFilter); if(OptionsUtils.isMtkSDSwapSurpported()){ IntentFilter intentFilterSDSwap=new IntentFilter(); intentFilterSDSwap.addAction(INTENT_SD_SWAP); context.registerReceiver(receiver,intentFilterSDSwap); } return receiver; }}
0 0
- 广播接收器(BroadcastReceiver)的使用
- BroadcastReceiver(广播接收器)
- 广播接收器(BroadcastReceiver)的分析
- Android 广播(Broadcast)及广播接收器(BroadcastReceiver)的使用
- Android 广播接收器(BroadcastReceiver)
- Android广播接收器(BroadcastReceiver)
- 关于广播接收器BroadcastReceiver的简单总结
- 广播接收器的使用
- 广播接收器的使用
- Android基础-broadcastreceiver(广播接收器)
- Android BroadcastReceiver(广播接收器)基础
- BroadCastReceiver android 广播接收器
- BroadcastReceiver 广播接收器
- BroadcastReceiver(广播接收器 )
- Android 广播接收器BroadcastReceiver
- android-----BroadcastReceiver广播接收器
- BroadcastReceiver广播接收器
- Android-BroadcastReceiver广播接收器
- Android逆向之动态调试总结
- 理解Window和WindowManager(Android开发艺术探索读书笔记)
- OkHttp使用Get和Post两种请求方式
- 创建FilenameFilter接口匿名内部类,实现过滤并删除指定格式文件
- 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数
- 广播接收器(BroadcastReceiver)的使用
- java集合-Set接口
- Linux系统目录详解介绍
- apache common Lang包StringUtils系列(七)
- easyui datagrid的点击选中再点击取消选中的方法
- require(),include(),require_once()和include_once()之间的区别
- 欢迎使用CSDN-markdown编辑器
- 第五届蓝桥杯软件类省赛真题-C-A-5_锦标赛
- 服务继承onCreate、onStartCommand执行顺序