android中对u盘以及tf卡插入的广播监听

来源:互联网 发布:plm软件占有率 编辑:程序博客网 时间:2024/06/06 01:09
public class UsbStateReceiver extends BroadcastReceiver {   //BroadcastReceiver    private String TAG = "UsbStateReceiver";    public static final int USB_STATE_ON = 0x00021;    public static final int USB_STATE_OFF = 0x00022;    private static final int GET_RUNNING_TASKS_NUM = 30;    private static final String PACKAGE_NAME = "com.memo.filemanager";    private static Handler mHandler;    public static Handler getHandler() {        return mHandler;    }    public static void setHandler(Handler handler) {        mHandler = handler;    }    private static int number = 0;    @Override    public void onReceive(final Context context, Intent intent) {        if ( number++ == 0) {            return;        }        Message msg = new Message();        String action = intent.getAction();        if (action.equals(Intent.ACTION_MEDIA_EJECT)) {            //USB设备移除,更新UI            Log.d( TAG, "USB:ACTION_MEDIA_EJECT");            msg.what = USB_STATE_OFF;        } else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {            //USB设备挂载,更新UI            Log.d( TAG, "USB:ACTION_MEDIA_MOUNTED");            msg.what = USB_STATE_ON;            ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);            RunningTaskInfo taskinfo = am.getRunningTasks(1).get(0);    // 获取到当前正在栈顶运行的Activity。            String packname = taskinfo.topActivity.getPackageName();    // 获取到当前任务栈顶程序所对应的包名。            if( !packname.equals(PACKAGE_NAME) ) {                /*                final MyDialog confirmDialog = new MyDialog(context, "使用文件管理器打开U盘?", "确定", "取消");                confirmDialog.setClicklistener(new MyDialog.ClickListenerInterface() {                    @Override                    public void doConfirm() {                        confirmDialog.dismiss();                        Intent i = new Intent(context, MainActivity.class);                        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                        i.putExtra("Selected", "Removable Disk");                        context.startActivity(i);                    }                    @Override                    public void doCancel() {                        confirmDialog.dismiss();                    }                });                confirmDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);                confirmDialog.show();                */                Intent i = new Intent(context, MainActivity.class);                if( isRunningTask(context)) {                    i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);                } else {                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                }                i.putExtra("Selected", "Removable Disk");                context.startActivity(i);            }        }        if( mHandler != null ) {            mHandler.sendMessage(msg);        }    }    public boolean isRunningTask(Context context){        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        List<RunningTaskInfo> tasks=  am.getRunningTasks(GET_RUNNING_TASKS_NUM);        Iterator<RunningTaskInfo> itInfo = tasks.iterator();        while( itInfo.hasNext() ){            RunningTaskInfo info = itInfo.next();            String packname = info.baseActivity.getPackageName();            if( packname.equals(PACKAGE_NAME) ) {                return true;            }        }        return false;    }    public boolean isRunningProcess( Context context ) {        PackageManager pm = context.getPackageManager();        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        List<RunningAppProcessInfo> appProcessList = am.getRunningAppProcesses();        ApplicationInfo appInfo = null;        for (RunningAppProcessInfo appProcessInfo : appProcessList) {            try {                appInfo = pm.getApplicationInfo(appProcessInfo.processName, 0);            } catch (PackageManager.NameNotFoundException e) {                e.printStackTrace();            }            if(appInfo.packageName.equals(PACKAGE_NAME)) {                return true;            }        }        return false;    }}


0 0
原创粉丝点击