当前位置: 首页 > article >正文

android获取外部sd卡路径,如何区分android中的内部和外部SD卡路径

Android应用程序中我需要做:

If(removable SdCard is present){

String path=get the path of removable Sdcard() ;

//using this path we will create some files in sdcard

} else{

//display error message

}

为此,我们使用以下代码:

If (Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)){

String path= Environment.getExternalStorageDirectory().getPath();

}

上面的代码在一些最新的Android手机中失败了.请帮助我们.

以下是我们尝试过的细节:

>在具有ICS和JellyBean操作系统的Android手机中,可移动SD卡的确切路径因设备制造商而异.

见下表

Tested Devices OS version removable sdcard path internal sd path

Samsung galaxy s2 4.0.4 /mnt/sdcard/external_sd /mnt/sdcard

Samsung S Advance 4.1.2 /storage/extSdCard /storage/sdcard0

Samsung Galaxy s3 4.0.4 /mnt/extSdCard /mnt/sdcard

Samsung Galaxy Note 4.0.4 /mnt/sdcard/external_sd /mnt/sdcard

在这些设备中运行上述代码时,我们得到:

> android API Environment.getExternalStorageDirectory().getPath()仅返回内部sd路径

>此外,即使删除了sdcard,API Environment.getExternalStorageState()也会在上述设备中返回Environment.MEDIA_MOUNTED.

>此外,API Environment.isExternalStorageRemovable()始终为上述设备返回false,无论是否存在可移动SD卡.

我们在谷歌搜索并尝试了他们给出的一些功能.它只给出了安装到设备的存储路径列表.但它没有说明是否存在删除标识卡.

我尝试获取存储路径的功能:

private static String getMountedPaths(){

String sdcardPath = "";

Runtime runtime = Runtime.getRuntime();

Process proc = null;

try {

proc = runtime.exec("mount");

} catch (IOException e1) {

e1.printStackTrace();

}

InputStream is = proc.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

String line;

BufferedReader br = new BufferedReader(isr);

try {

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

if (line.contains("secure")) continue;

if (line.contains("asec")) continue;

if (line.contains("fat")) {//TF card

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

if (columns != null && columns.length > 1) {

mount.add(columns[1]);

sdcardPath=columns[1];

}

} else if (line.contains("fuse")) {//internal storage

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

if (columns != null && columns.length > 1) {

mount.add(columns[1]);

}

}

}

} catch (IOException e) {

e.printStackTrace();

}

return sdcardPath;

}

有没有比上面更好的其他功能来获取android中的存储路径列表?

也有助于解决上述问题.

http://www.lryc.cn/news/2420639.html

相关文章:

  • 基于php+vue购物商城系统python-flask-django-nodejs
  • 在windows 本机 搭建 FTP 保姆保姆级教学
  • FMR-31模拟信号采集模块实现实时数据采集与处理
  • Nexus()下载与安装详解
  • weblogic的安装和配置
  • 单点登录(SSO)-- 实现单点登录的几种方式
  • 什么是单点登录?如何实现?
  • 基于STC12单片机恒温箱温度控制系统设计
  • Linux 内核模块编程
  • PGP加密,良好隐私密码法
  • 使用java语言编写一个简易的计算器(完整代码与详细步骤都有哦!)
  • 手把手教你实现Gitlab远程备份(超详细,图文并茂)
  • 基于Java+Jsp+Ssm+Mysql实现的Java Web家庭理财消费支出收支管理系统设计与实现
  • 为什么家中照明用LED灯越来越不耐用?
  • 多功能聊天软件的设计与开发——音频视频聊天模块
  • java汽车维修管理系统(开题+源码)
  • 92条 SVN命令
  • 史上最全免费收录网站搜索引擎登录口(经典)
  • 12个国外稳定无限量免费网盘
  • plsql 存储过程 批量提交_浅谈PetShop之使用存储过程与PLSQL批量处理(附案例)
  • html5 右侧客服代码,简洁右侧栏客服代码
  • F5 负载均衡器
  • ZFAKA-自动发卡收款平台全套搭建教程(含支付接口设置)
  • Visual C++6.0下载和基础使用方法
  • WebApi接口测试工具:WebApiTestClient
  • 新浪短url地址
  • 物联网技术的发展历程及其未来趋势
  • Java基于线上考试系统(开题+源码)
  • 串口和TCP互相转发工具
  • 基于web的音乐网站的设计与实现(论文+源码)_kaic