Android双SD卡路径获取
来源:互联网 发布:网络推编辑 编辑:程序博客网 时间:2024/05/01 22:10
Android双SD卡路径获取
大家都知道获取外部存储目录的方法,但是你有没有遇到过这个情况, Environment.getExternalStorageState(),返回 ”removed“,但是你使用re管理器却能看到手机内置sd卡,此时使用Environment.getExternalStorageDirectory().getAbsolutePath()却能返回该地址,并且能正常读写。
如果你只想在外置sd卡读写文件,那好了,这篇文章正适合你,看官可以看下去了,请测有效。
public class Utils {/** * 获取手机自身内存路径/data目录 * */public static String getPhoneCardPath() {return Environment.getDataDirectory().getAbsolutePath();}/** * 获取sd卡路径 双sd卡时,根据”设置“里面的数据存储位置选择,获得的是内置sd卡或外置sd卡 * * @return */public static String getNormalSDCardPath() {return Environment.getExternalStorageDirectory().getPath();}/** * 获取sd卡路径 双sd卡时,获得的是外置sd卡 * * @return */public static String getSDCardPath() {String cmd = "cat /proc/mounts";Runtime run = Runtime.getRuntime();// 返回与当前 Java 应用程序相关的运行时对象BufferedInputStream in = null;BufferedReader inBr = null;try {Process p = run.exec(cmd);// 启动另一个进程来执行命令in = new BufferedInputStream(p.getInputStream());inBr = new BufferedReader(new InputStreamReader(in));String lineStr;while ((lineStr = inBr.readLine()) != null) {// 获得命令执行后在控制台的输出信息Log.i("CommonUtil:getSDCardPath", lineStr);if (lineStr.contains("sdcard")&& lineStr.contains(".android_secure")) {String[] strArray = lineStr.split(" ");if (strArray != null && strArray.length >= 5) {String result = strArray[1].replace("/.android_secure","");return result;}}// 检查命令是否执行失败。if (p.waitFor() != 0 && p.exitValue() == 1) {// p.exitValue()==0表示正常结束,1:非正常结束Log.e("CommonUtil:getSDCardPath", "命令执行失败!");}}} catch (Exception e) {Log.e("CommonUtil:getSDCardPath", e.toString());// return Environment.getExternalStorageDirectory().getPath();} finally {try {if (in != null) {in.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if (inBr != null) {inBr.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return Environment.getExternalStorageDirectory().getPath();}// 查看所有的sd路径public String getSDCardPathEx() {String mount = new String();try {Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("mount");InputStream is = proc.getInputStream();InputStreamReader isr = new InputStreamReader(is);String line;BufferedReader br = new BufferedReader(isr);while ((line = br.readLine()) != null) {if (line.contains("secure"))continue;if (line.contains("asec"))continue;if (line.contains("fat")) {String columns[] = line.split(" ");if (columns != null && columns.length > 1) {mount = mount.concat("*" + columns[1] + "\n");}} else if (line.contains("fuse")) {String columns[] = line.split(" ");if (columns != null && columns.length > 1) {mount = mount.concat(columns[1] + "\n");}}}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return mount;}// 获取当前路径,可用空间public static long getAvailableSize(String path) {try {File base = new File(path);StatFs stat = new StatFs(base.getPath());long nAvailableCount = stat.getBlockSize()* ((long) stat.getAvailableBlocks());return nAvailableCount;} catch (Exception e) {e.printStackTrace();}return 0;}}
0 0
- android sd卡路径正确获取 双sd卡获取
- android sd卡路径正确获取 双sd卡获取
- android双SD卡路径获取
- android双SD卡路径获取
- Android双SD卡路径获取
- android获取sd卡路径
- Android获取sd卡路径
- android sd卡路径正确获取 双sd卡获取(getexternalstoragedirectory)
- android获取sd卡路径方法:
- android:获取sd卡路径方法
- Android中怎样获取SD卡路径
- Android 4.0获取外置SD卡 路径
- android 获取外置SD卡的路径
- android 手机获取外置SD卡路径
- android 获取加载的SD卡路径
- android获取外置SD卡的路径
- Android 获取外置SD卡路径
- android获取外置SD卡路径
- SpringMvc登陆拦截器的基本使用
- client.transport.sniff的使用方法
- centos中为php安装GnuPG扩展
- viewpager、fragment滑动切换卡顿问题
- 深入理解linux系统下proc文件系统内容
- Android双SD卡路径获取
- tomcat配置数据源案例
- 浅谈逆序数
- linux /proc/pid/maps 信息分析
- CodeIgniter入口文件解析
- java面试题集锦1
- 我的架构师之路
- Google浏览器如何加载本地文件
- 【HTML5】HTML5 高级程序设计 学习笔记1 HTML5新特性简介