Android:默认手机存储路径为TF卡
2016-11-30 17:00
246 查看
处理的方法是当手机中存在TF卡时接收系统的广播,然后进行后续功能实现的操作。步骤如下:
一:在AndroidManifest.xml中添加如下:
备注:存储,默认为手机存储,格式化手机存储后会默认到SD卡的问题
这个是正常现象,格式化的真正流程是:unmount-》格式化-》mount,因为在格式化手机存储的时候,首先要进行的动
作是unmount 手机存储,这样手机存储这块就不在了,所有手机会自动跳转到默认存储为SD卡上。之后格式化手机存储
后,又会mount 手机存储,手机能看到手机存储这块空间,但是默认存储空间不会自动跳转,需要手动切换。
一:在AndroidManifest.xml中添加如下:
<!--M:lyj if you have a TF card In the mobile phone , storage priority choose it --> <receiver android:name=".zf.ZfDefaultSDReceiver"> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <data android:scheme="file"/> </intent-filter> </receiver>二:添加.java文件,实现存储TF卡的功能
package com.android.settings.zf; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.UserHandle; import android.os.storage.StorageManager; import android.util.Log; import java.util.ArrayList; import java.util.List; import android.os.storage.StorageVolume; import com.mediatek.storage.StorageManagerEx; public class ZfDefaultSDReceiver extends BroadcastReceiver { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0x01: setDefault(); break; default: break; } } }; private StorageManager mStorageManager; @Override public void onReceive(Context context, Intent intent) { mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); mHandler.sendEmptyMessage(0x01); } private void setDefault() { StorageVolume[] availableVolumes = getDefaultWriteDiskList(); for (StorageVolume volume : availableVolumes) { String path = volume.getPath(); if(FeatureOption.MTK_2SDCARD_SWAP) {//支持APK应用可以移动到SD卡 if(path != null && !"/storage/sdcard1".equals(path)) { StorageManagerEx.setDefaultPath(path); break; } } else { if(path != null && !"/storage/emulated/0".equals(path)) { StorageManagerEx.setDefaultPath(path); break; } } } } private StorageVolume[] getDefaultWriteDiskList() { List<StorageVolume> storageVolumes = new ArrayList<StorageVolume>(); StorageVolume[] volumes = mStorageManager.getVolumeList(); for (StorageVolume volume : volumes) { if (Environment.MEDIA_MOUNTED.equals(mStorageManager.getVolumeState(volume.getPath()))) { storageVolumes.add(volume); } } return storageVolumes.toArray(new StorageVolume[storageVolumes.size()]); } }
备注:存储,默认为手机存储,格式化手机存储后会默认到SD卡的问题
这个是正常现象,格式化的真正流程是:unmount-》格式化-》mount,因为在格式化手机存储的时候,首先要进行的动
作是unmount 手机存储,这样手机存储这块就不在了,所有手机会自动跳转到默认存储为SD卡上。之后格式化手机存储
后,又会mount 手机存储,手机能看到手机存储这块空间,但是默认存储空间不会自动跳转,需要手动切换。
相关文章推荐
- android获取扩展存储路径,TF卡、U盘等
- android 获得手机外插SD卡 存储路径和存储空间
- Android手机自带内部存储路径的获取
- Android手机自带内部存储路径的获取
- Android判断是否存在外置SD卡(获取手机所有存储设备的路径)
- Android获取手机外部存储路径的方法Environment.getExternalStorageDirectory()到底是什么路径
- Android获取机身存储、内置SD卡与外置TF卡路径
- Android 内部存储(外置SD卡)和扩展存储卡(TF卡)路径的获取
- 解决Android手机自带内部存储路径存在但是却获取不到内容的问题
- Android系统的改进(八)-- 当把手机当作存储介质连到电脑后,如果指定的铃声在存储卡上,指定的歌曲铃声消失,恢复默认
- 对android默认存储路径中文件的读写
- android下获得手机自带存储的路径
- Android手机自带内部存储路径的获取
- android 手机内置,sd卡存储的存储路径和空间问题
- Android调试细节01——在红米手机上调试sqlite数据存储路径
- Android获取不同手机 自身存储和外置SD卡存储路径的解决方案
- Android手机自带内部存储路径的获取 (转)
- android 内部缓存器(手机自带的存储空间中的当前包文件的路径)
- android资源加载:资源id--(查资源表)匹配-->资源路径->加载资源 手机(配置信息)<-->资源(配置信息) 默认资源