android内置和外置sdcard区别

今天在写项目的时候发现了一个bug,后来发现是在android不同版本上存储路径不同。

查到一个这个问题:

以前的Android(4.1之前的版本)中,SDcard跟路径通过“/sdcard”或者“/mnt/sdcard”来表示存储卡,而在Jelly Bean系统中修改为了“/storage/sdcard0”,以后可能还会有多个SDcard的情况。

目前为了保持和之前代码的兼容,sdcard路径做了link映射。

为了使您的代码更加健壮并且能够兼容以后的Android版本和新的设备,请通过Environment.getExternalStorageDirectory().getPath()来获取scared路径,

同时测试了cooled(android 4.1.2 api16)和samsung(android 4.4.2),


String dataDirectory = Environment.getDataDirectory().toString();

String downLoadCacheDirectory = Environment.getDownloadCacheDirectory().toString();

String externalStorageDirectory = Environment.getExternalStorageDirectory().toString();

String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory("zip").toString();

String rootDirectory = Environment.getRootDirectory().getPath();

Log.d("dir_dataDirectory",dataDirectory);

Log.d("dir_downLoadCacheDir",downLoadCacheDirectory);

Log.d("dir_externalStorage",externalStorageDirectory);

Log.d("dir_externalStoragePu",externalStoragePublicDirectory);

Log.d("dir_rootDirectory",rootDirectory);

发现输出如下:

// samsung

// dir_dataDirectory: /data

// dir_downLoadCacheDir: /cache

// dir_externalStorage: /storage/emulated/0

// dir_externalStoragePu: /storage/emulated/0/zip

// dir_rootDirectory: /system

// Coolpad

// dir_dataDirectory: /data

// dir_downLoadCacheDir: /cache

// dir_externalStorage: /mnt/sdcard

// dir_externalStoragePu: /mnt/sdcard/zip

// dir_rootDirectory: /system

同时samsung的型号中没有添加外置scared

之前一直以为sdcard是外置的,现在看来分内置和外置sdcard

又查了一下内置和外置sdcard的区别:

. 插入一张外置SD卡后

内置SD卡路径:/storage/emulated/0

外置SD卡路径:/storage/extSdCard

  1. 取出外置SD卡后

内置SD卡路径:/storage/emulated/0

你可能感兴趣的:(android内置和外置sdcard区别)