Android13 SD卡格式化问题分析

问题描述

Android13 上进行SD卡格式化,格式化后显示的SD卡容量为0,退出重新进入,显示正常。

源码分析

首先在Settings->Storage页面,切换到SD card,页面将显示SD card的存储信息

切换到sdcard.png

代码位于packages/apps/Settings/src/com/android/settings/deviceinfo/StorageDashboardFragment.java

 

java

复制代码

@Override public void onResume() { super.onResume(); if (mIsLoadedFromCache) { mIsLoadedFromCache = false; } else { mStorageEntries.clear(); mStorageEntries.addAll( StorageUtils.getAllStorageEntries(getContext(), mStorageManager)); Log.d("jasonwan", "---refreshUi-09---"); //刷新UI refreshUi(); } mStorageManager.registerListener(mStorageEventListener); } private void refreshUi() { mStorageSelectionController.setStorageEntries(mStorageEntries); mStorageSelectionController.setSelectedStorageEntry(mSelectedStorageEntry); //设置已选择的存储项 mStorageUsageProgressBarController.setSelectedStorageEntry(mSelectedStorageEntry); mOptionMenuController.setSelectedStorageEntry(mSelectedStorageEntry); getActivity().invalidateOptionsMenu(); // To prevent flicker, hides secondary users preference. // onReceivedSizes will set it visible for private storage. setSecondaryUsersVisible(false); if (!mSelectedStorageEntry.isMounted()) { // Set null volume to hide category stats. mPreferenceController.setVolume(null); return; } Log.d("jasonwan", " mStorageCacheHelper.hasCachedSizeInfo()="+mStorageCacheHelper.hasCachedSizeInfo()); Log.d("jasonwan", " mSelectedStorageEntry.isPrivate()="+mSelectedStorageEntry.isPrivate()); //sdcard属于public volume,因此这里的isPrivate()为false if (mStorageCacheHelper.hasCachedSizeInfo() && mSelectedStorageEntry.isPrivate()) { StorageCacheHelper.StorageCache cachedData = mStorageCacheHelper.retrieveCachedSize(); mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo()); mPreferenceController.setUsedSize(cachedData.totalUsedSize); mPreferenceController.setTotalSize(cachedData.totalSize); Log.d("jasonwan", " totalUsedSize="+cachedData.totalUsedSize+", totalSize="+cachedData.totalSize); } if (mSelectedStorageEntry.isPrivate()) { mStorageInfo = null; mAppsResult = null; // Hide the loading spinner if there is cached data. if (mStorageCacheHelper.hasCachedSizeInfo()) { //TODO(b/220259287): apply cache mechanism to secondary user mPreferenceController.onLoadFinished(mAppsResult, mUserId); } else { maybeSetLoading(isQuotaSupported()); // To prevent flicker, sets null volume to hide category preferences. // onReceivedSizes will setVolume with the volume of selected storage. mPreferenceController.setVolume(null); } // Stats data is only available on private volumes. getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this); getLoaderManager() .restartLoader(VOLUME_SIZE_JOB_ID, Bundle.EMPTY, new VolumeSizeCallbacks()); getLoaderManager().restartLoader(ICON_JOB_ID, Bundle.EMPTY, new IconLoaderCallbacks()); } else { mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo()); } }

refreshUi方法中,会进行容量大小的显示,sdcard因为是public volume,所以isPrivate()方法为false,sdcard的容量大小计算及显示在mStorageUsageProgressBarController.setSelectedStorageEntry(mSelectedStorageEntry)</

<think>好的,用户的问题Android设备在格式化SD后导致设备重启,需要解决方案。首先,我需要分析可能的原因。根据引用[1]和[2],SD容易损坏或文件系统出问题格式化时如果本身有质量问题或操作中断,可能导致异常。另外,引用[4]提到分区或文件系统类型(如EXT3)可能影响系统稳定性,特别是如果设备不支持特定的分区格式,可能在访问时引发问题,比如系统崩溃或重启。 接下来,解决方案需要分步骤。首先检查SD是否有物理损坏或质量问题,用户可以用其他设备测试或使用工具检测。如果问题,可能需要重新正确格式化,注意选择适合的文件系统(如FAT32或exFAT),避免使用设备不支持的格式。引用[4]指出FAT32是较通用的选择,而EXT3可能需要特定支持。 另外,系统缓存或软件冲突也可能导致重启,可以尝试清除媒体存储的缓存,或者进入安全模式排查第三方应用。如果问题依旧,备份数据后恢复出厂设置可能有效,引用[3]提供了恢复出厂设置的步骤。最后,如果SD本身有问题,更换新可能是最终办法。 生成相关问题需要考虑用户可能进一步的问题,比如数据恢复、文件系统选择、系统设置影响等,确保覆盖用户潜在需求。</think>### Android设备因SD格式化导致重启的解决方案 #### 1. **检查SD物理状态与文件系统** - **物理检测**:将SD插入其他设备(如电脑或其他手机),观察是否被正常识别。若频繁出现读写错误或无法识别,可能是SD硬件损坏,需更换[^1][^2]。 - **文件系统兼容性**:Android设备通常支持FAT32/exFAT格式。若使用EXT3等非通用文件系统(如引用[4]所述),可能导致系统兼容性问题。重新格式化SD为FAT32: ```shell # 在电脑上使用磁盘工具(如Windows磁盘管理或Linux的GParted)选择FAT32/exFAT格式 ``` #### 2. **修复系统与SD的交互异常** - **清除媒体存储缓存**: - 进入 *设置 > 应用 > 显示系统进程 > 媒体存储*,依次选择 *清除缓存* 和 *清除数据*。 - 重启设备,系统会重新扫描SD。 - **安全模式排查**: - 长按电源键进入重启菜单,长按“关机”选项进入安全模式。 - 若安全模式下无重启问题,可能是第三方应用冲突,需逐一卸载近期安装的应用。 #### 3. **恢复出厂设置(谨慎操作)** - 若上述步骤无效,可尝试恢复出厂设置(操作前务必备份数据): - *Android 5.0+*:进入 *设置 > 备份和重置 > 恢复出厂设置 > 重置设备* [^3]。 - 完成后重新插入SD,观察是否仍存在重启问题。 #### 4. **更换SD** - 若确认SD存在质量问题(如引用[2]提到的“录像写入失败需格式化”),建议更换为Class 10或UHS-I等级的高速,并优先选择品牌产品。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值