获取内置SD卡很简单,就一行代码

/**

* 获取内置SD卡路径

* @return

*/

public String getInnerSDCardPath() {

return Environment.getExternalStorageDirectory().getPath();

}

获取外置SD卡比较麻烦,

/**

* 获取外置SD卡路径

* @return

*/

public List getExtSDCardPaths() {

List paths = new ArrayList();

String extFileStatus = Environment.getExternalStorageState();

File extFile = Environment.getExternalStorageDirectory();

if (extFileStatus.endsWith(Environment.MEDIA_UNMOUNTED)

&& extFile.exists() && extFile.isDirectory()

&& extFile.canWrite()) {

paths.add(extFile.getAbsolutePath());

}

try {

// obtain executed result of command line code of 'mount', to judge

// whether tfCard exists by the result

Runtime runtime = Runtime.getRuntime();

Process process = runtime.exec("mount");

InputStream is = process.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String line = null;

int mountPathIndex = 1;

while ((line = br.readLine()) != null) {

if ((!line.contains("fat") && !line.contains("fuse") && !line

.contains("storage"))

|| line.contains("secure")

|| line.contains("asec")

|| line.contains("firmware")

|| line.contains("shell")

|| line.contains("obb")

|| line.contains("legacy") || line.contains("data")) {

continue;

}

String[] parts = line.split(" ");

int length = parts.length;

if (mountPathIndex >= length) {

continue;

}

String mountPath = parts[mountPathIndex];

if (!mountPath.contains("/") || mountPath.contains("data")

|| mountPath.contains("Data")) {

continue;

}

File mountRoot = new File(mountPath);

if (!mountRoot.exists() || !mountRoot.isDirectory()

|| !mountRoot.canWrite()) {

continue;

}

boolean equalsToPrimarySD = mountPath.equals(extFile

.getAbsolutePath());

if (equalsToPrimarySD) {

continue;

}

paths.add(mountPath);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return paths;

}

首先获取了Android标准一部分的外置SD卡,如果它可用的话。

然后利用运行时,通过命令行函数"mount"来获取所有的存储位置,并对返回的结果进行SD卡或者TF卡的查找。

最后返回了所有可用于存储的不同的卡的位置,用一个List来保存。由于不是所有的手机都支持TF卡,因而这个List包含的路径未必很多,只有一个SD卡的手机只会返回一个路径,多个可用存储位置的会返回多个路径。

但有一点,是必须的,paths.get(0)肯定是外置SD卡的位置,因为它是primary external storage.

androidsdcard挂载目录_Android获取手机自带SDCard和外置SDCard路径相关推荐

  1. androidsdcard挂载目录_获取android手机的自带存储路径和sdcard存储路径

    展开全部 1.方法一 //内置sd卡路径String sdcardPath = System.getenv("EXTERNAL_STORAGE"); //内置sd卡路径String ...

  2. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  3. android 获取sdcard 禁用sdcard,Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径 Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标 ...

  4. android 获取图片上某一个文字位置_android 获取手机中的所有图片或某一目录下的图片方法...

    获取手机中的所有图片,并过滤获取某一目录下的图片.(注释掉的代码可以按照目录分组) private void getAllPhotoInfo() { new Thread(new Runnable() ...

  5. java 读取手机文件_Android获取手机文件夹及文件列表的方法

    先看看效果图: package wuwang.tools.utils; import java.io.File; import java.io.FileInputStream; import java ...

  6. 通过java获取手机信息_android获取手机信息

    玩Android的朋友们进来看看吧! 1.获取手机安装的应用信息(排除系统自带): Java代码: 1 private String getAllApp() { 2 String result = & ...

  7. 获取android设备唯一编号_android 获取手机设备的唯一码(IMIE )

    获取手机设备的唯一码(IMIE ) public void fetch_status(){ TelephonyManager tm = (TelephonyManager) this .getSyst ...

  8. android pak文件_Android 获取手机中已安装apk文件信息

    通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManager(); ...

  9. java中获得手机唯一_Android 获取手机唯一识别码

    [实例简介]得到手机唯一识别码 [实例截图] [核心代码]private String ChuanMa() { String szImei;// imei码 String m_szDevIDShort ...

最新文章

  1. 比特币现金诞生一周年,未来发展瞄上了IPFS技术
  2. Angular 7 版本
  3. 【NLP】ALBERT:更轻更快的NLP预训练模型
  4. CTF(Pwn)32位文件 和 64 文件 的 差异
  5. python语言的实验心得体会_国产编程语言木兰被质疑换皮Python:当事人承认夸大、道歉...
  6. SAP Marketing Engagement Management
  7. 使用HTML5+CSS3制作圆角内发光按钮----示例
  8. 在Java EE 7中自动配置JMS资源
  9. 关于memcpy和memmove两函数的区别
  10. 求两字符串最长公共连续子串---C++编程
  11. Java: ArrayList
  12. MathType安装指南
  13. C#如何调用阿里云短信接口
  14. 工具变量估计与两阶段最小二乘法
  15. 求二元一次方程 的解 C语言
  16. 免费开源的智能家居系统,SpringBoot+Vue前后端分离,WiFi智能设备接入,手把手开发安卓APP,建立QQ智能管家机器人!
  17. 飞书第三方ISV服务商应用开发及上架教程
  18. 跨境商城独立站源码制作搭建
  19. 华为hcie认证工程师里一定要知道的Radius 基本介绍
  20. attempt_load() got an unexpected keyword argument ‘map_location‘

热门文章

  1. constraintlayout_androidApi:ConstraintLayout
  2. openlayer 图层上下_OpenLayers 3 的图层体系结构
  3. android service 构造函数,Android IntentService无法实例化类;没有空构造函数
  4. 初一数学下册电子课本_七年级数学下册人教版-数学七年级下册电子课本-精品下载...
  5. oracle database link创建
  6. unity android 原生,unity创建Android原生插件
  7. @RunWith@ContextConfiguration进行Spring上下文测试报错
  8. JavaWEB开发的国际化
  9. 核心对象+持久对象全析(3)
  10. android datebinding学习