android SD卡热插拔监听

//初始化receiver
protected void onResume()
    {
        super.onResume();
        IntentFilter intentFilter = new IntentFilter(
                Intent.ACTION_MEDIA_MOUNTED);
        intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
        intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
        intentFilter.addDataScheme("file");

        // install an intent filter to receive SD card related events.
        mReceiver = new BroadcastReceiver()
        {

            public void onReceive(Context arg0, Intent arg1)
            {
                onReceiveSdCardBroadCast(arg1);
            }
        };
        registerReceiver(mReceiver, intentFilter);
        initUI(!isUnMount);
    }

//接到广播后处理
    private void onReceiveSdCardBroadCast(Intent intent)
    {
        String action = intent.getAction();
        Log.i(TAG, "receive broadcast " + action);
        if (Intent.ACTION_MEDIA_MOUNTED.equals(action))
        {
            initUI(true);
        }
        else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action))
        {
            initUI(false);
        }
        else if (Intent.ACTION_MEDIA_EJECT.equals(action))
        {
            initUI(false);
        }
    }

//注销receiver
    protected void onDestroy()
    {
        Log.i(TAG, TAG + " is onDestroy");
        super.onDestroy();
        if (mReceiver != null)
        {
            unregisterReceiver(mReceiver);
            mReceiver = null;
        }
    }

你可能感兴趣的:(android)