处理的方法是当手机中存在TF卡时接收系统的广播,然后进行后续功能实现的操作。步骤如下:

一:在AndroidManifest.xml中添加如下:

                                                                            
 二:添加.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 storageVolumes = new ArrayList();        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 手机存储,手机能看到手机存储这块空间,但是默认存储空间不会自动跳转,需要手动切换。


更多相关文章

  1. android 获得一个应用程序的启动次数,运行时间等信息
  2. Android手机记账应用开发视频教程
  3. Android(安卓)Studio 在默认build.gradle 中加入自定义源(新建项
  4. Android(安卓)Togglebutton 默认背景被放大
  5. 5分钟实现Android手机上的指南针应用
  6. 电脑导出文件到手机 adb push
  7. ANDROID备份
  8. Android(安卓)Studio 真机调试vivo系列手机安装失败处理
  9. android默认关闭Location服务及关闭锁屏功能

随机推荐

  1. Android事件分发机制概括
  2. androiddd
  3. android 照相以及关于自动生成的图片分辨
  4. Android 如何 隐藏导航栏
  5. android volley 发送 POST 请求
  6. Android Studio使用AIDL时无法找到自定义
  7. Android 编程下背景图片适配工具类
  8. 操作内存卡的常用代码
  9. android dpi DisplayMetrics
  10. 选择图文表