关于2sdcard的内外切换

首先在mtk关于2sdcard中都集中用宏控制

Feature. MTK_SHARED_SDCARD

Feature. MTK_2SDCARD_SWAP

If(Feature.MTK_SHARED_SDCARD&&!Feature. MTK_2SDCARD_SWAP)表示不适用2sdcard方案,反之则表示使用。

当adbshell的时候,就会发现有很多和sdcard相关的文件

/mnt/sdcard

根目录下有sdcard

/storage/sdcard

/storage/emulated/0都指向的是同一个文件,其目录就在/mnt/sdcard下,其他的就类似于windows中的快捷方式,

      当使用2sdcard的时候此时外部存储卡路径就是/storage/sdcard0,内部存储卡的路径就为/storage/sdcard1,为什么要这么做?原因是由于手机内部的存储卡太小,而外部存储卡一般都是很大,mtk为了解决这一问题,就有了这一方案,当插卡的时候就自动将/storage/sdcard0默认为外部存储卡,这样无论是安装apk在,或者启动应用时所要建立的文件夹都默认在这个比较大的卡内。

2sdcard的实现流程

          Mountservice中在handleSystemReady()启动线程,该线程来读取t卡是否插入,handleSystemReady()是系统启动完后会调用该函数,MountServiceBinderListender()来监听t卡是否插入,handleSystemReady()所启动的线程是反复的获得t卡插入时候的路径,之后再进入updatedefaulepath()来修改路径,如果t卡插入,则将外部存储器修改为/mnt/sdcard0,如果没有插入则就将内部存储器修改为/mnt/sdcard0

之后在setting界面中的存储通过memory.java调用,注册mDynSwapReciever函数来接受ACTION_DYNAMIC_SD_SWAP消息,该函数最后会调用到dynamicShowDefaultWriteCategory().来显示StorageEventListener来实现监听,当开机后有插拔t卡的动作时候,会及时反应,之后会调用到,StorageManagerex来设置路径。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值