关于SD卡广播和权限

    /*
MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除
MEDIA_CHECKING:表明对象正在磁盘检查
MEDIA_MOUNTED:表明sd对象是存在并具有读/写权限
MEDIA_MOUNTED_READ_ONLY:表明对象权限为只读
MEDIA_NOFS:表明对象为空白或正在使用不受支持的文件系统
MEDIA_REMOVED:如果不存在 SDCard 返回
MEDIA_SHARED:如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回
MEDIA_UNMOUNTABLE:返回 SDCard 不可被安装 如果 SDCard 是存在但不可以被安装
MEDIA_UNMOUNTED:返回 SDCard 已卸掉如果 SDCard 是存在但是没有被安装
*/
 
/packages/apps/Settings/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java
private void updatePreferencesFromState() {
        // Only update for physical volumes
        //只有更新物理卷
       
        if (mVolume == null) return;
        if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_phone) return;
        mMountTogglePreference.setEnabled(true);
        final String state = mStorageManager.getVolumeState(mVolume.getPath());
//SD卡只读
        if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            mItemAvailable.setTitle(R.string.memory_available_read_only);
            if (mFormatPreference != null) {
                removePreference(mFormatPreference);
            }
        } else {
            mItemAvailable.setTitle(R.string.memory_available);
        }
//只读||如果不存在SD卡将返回
        if (Environment.MEDIA_MOUNTED.equals(state)
                || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            mMountTogglePreference.setEnabled(true);
            if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_sd_card) {
                mMountTogglePreference.setTitle(R.string.sd_eject);
                mMountTogglePreference.setSummary(R.string.sd_eject_summary);
            } else if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_usb) {
                mMountTogglePreference.setTitle(R.string.usb_storage_eject);
                mMountTogglePreference.setSummary(R.string.usb_storage_eject_summary);
            }
            addPreference(mItemTotal);
            addPreference(mItemAvailable);
        } else {//已卸载SD卡||空白的,不支持 ||不可被安装
            if (Environment.MEDIA_UNMOUNTED.equals(state) || Environment.MEDIA_NOFS.equals(state)
                    || Environment.MEDIA_UNMOUNTABLE.equals(state)) {
                mMountTogglePreference.setEnabled(true);
                if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_sd_card) {
                    mMountTogglePreference.setTitle(R.string.sd_mount);
                    mMountTogglePreference.setSummary(R.string.sd_mount_summary);
                } else if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_usb) {
                    mMountTogglePreference.setTitle(R.string.usb_storage_mount);
                    mMountTogglePreference.setSummary(R.string.usb_storage_mount_summary);
                }
   addPreference(mItemTotal);
            addPreference(mItemAvailable);
   
            } else {//
                mMountTogglePreference.setEnabled(false);
                if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_sd_card) {
                    mMountTogglePreference.setTitle(R.string.sd_mount);
                    mMountTogglePreference.setSummary(R.string.sd_insert_summary);
                } else if (mVolume.getDescriptionId() == com.android.internal.R.string.storage_usb) {
                    mMountTogglePreference.setTitle(R.string.usb_storage_mount);
                    mMountTogglePreference.setSummary(R.string.usb_storage_insert_summary);
                }
            }
            removePreference(mUsageBarPreference);
            removePreference(mItemTotal);
            removePreference(mItemAvailable);
            if (mFormatPreference != null) {
                removePreference(mFormatPreference);
            }
        }

Guess you like

Origin blog.csdn.net/ruidongren/article/details/26085181