Android各种机型,各种系统版本,如何获取外置SDCard路径

由于项目需要,在有外置sdcard的情况下,可能不希望直接将应用内数据存入内置sdcard,我于是专门写了一个函数来获取sdcard路径

如果有外置sdcard就获取外置sdcard,如果没有就用系统默认的"外置sdcard"(深入研究可能知道,这个外置sdcard实际是从内置sdcard里面分出来的一个分区而已)

下面直接上代码:

public static String getSDCardPath(){
		String cmd = "cat /proc/mounts";
        Runtime run = Runtime.getRuntime();
        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("CommonUitls", lineStr);
                if (lineStr.toLowerCase().contains("sdcard".toLowerCase())
                        && lineStr.contains(".android_secure")) {
                    String[] strArray = lineStr.split(" ");
                    if (strArray != null && strArray.length >= 5) {
                        String result = strArray[1].replace("/.android_secure",
                                "");
                        Log.i("CommonUitls", result);
                        return result;
                    }
                }
                if(lineStr.toLowerCase().contains("extsd".toLowerCase())){
                	String[] strArray = lineStr.split(" ");
                	Log.i("CommonUitls", strArray[1]);
                	return strArray[1];
                }
                if (p.waitFor() != 0 && p.exitValue() == 1) {
                	Log.e("CommonUitls", "CMD cat /proc/mounts ERROR!");
                }
            }
        } catch (Exception e) {
        	e.printStackTrace();
        	Log.e("CommonUitls", e.toString());
        }finally{
            try {
	            if(in!=null){
	               in.close();
	            }
            } catch (IOException e) {
            	// TODO Auto-generated catch block
            	e.printStackTrace();
            	Log.e("CommonUitls", e.toString());
            }
		    try {
		        if(inBr!=null){
		        	inBr.close();
		         }
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				Log.e("CommonUitls", e.toString());
			}
	    }
        return Environment.getExternalStorageDirectory().getPath();
	}
时间: 2024-11-02 00:09:17

Android各种机型,各种系统版本,如何获取外置SDCard路径的相关文章

c# 获取系统版本,获取net framework 版本(Environment 类)

原文:c# 获取系统版本,获取net framework 版本(Environment 类) 1.获取当前操作系统版本信息 使用Environment.OSVersion 属性 获取包含当前平台标识符和版本号的 OperatingSystem 对象. 命名空间:  System程序集:  mscorlib(在 mscorlib.dll 中) 使用方法: Environment.OSversion.ToString(); 2.获取本机.net framework 版本信息 使用Environmen

Linux 内核、系统 版本信息 获取

1.查看内核 ## 通过读取 /proc/version 文件,获取内核版本信息 # cat /proc/version ## 直接通过 uname命令 获取内核信息 # uname -r   2.查看系统版本 ## lsb_release 命令查看 ## lsb_release -a 查看系统所有信息 ## lsb_release -sc 只查看系统版本发行号 # lsb_release -a # lsb_release -sc ## 读取 /etc/issue 文件,获取系统版本信息,适用于

Android开发教程--关于系统相机拍照获取的照片尺寸较小问题的解决

网上大部分的解决方案,都是如下方式: Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent,REQUEST_CODE_CAPTURE_CAMEIA); 拍照完成之后,回调: protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resul

Android 悬浮窗各机型各系统适配大全

这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时,感兴趣或者找到其他机型适配方法的请留言告诉我,或者加群544645972一起交流一下,非常感谢~ 相关权限请看我的另一篇博客:android permission权限与安全机制解析(下),或者关于权限的案例使用:android WindowManager解析与骗取QQ密码案例分析. 转载请注明出处

Android之內置、外置SDCard

From:http://blog.csdn.net/u011290399/article/details/10363881 在项目中,发现通过Android提供的API获取外置SDCard的操作一直不能成功,一直没有太多的时间解决该问题 昨天週末,终于可以抽空研究了一下这个问题了 在网上搜索下,结果百度的搜索引擎怎麽搜索也未能给我满足需求的搜索结果 不过,搜索出的内置SDCard与外置SDCard互换操作给出了思路 先看看SDCard的路径:/storage/extSdCard./storage

Android安卓获取ID号,本机号码,手机型号,系统版本

Mark一下 public void Msg1(String str) { Toast toast = new Toast(this); Toast toast1 = toast.makeText(this, str, Toast.LENGTH_LONG); toast1.show(); } //获取ID号 final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPH

Android WebView在4.4版本以上无法获取高度

在4.4以下的系统中,我们通常监听webview滑动到底端的方法如下: 1,先重新webview,FoundWebView public class FoundWebView extends WebView { ScrollInterface mt; public FoundWebView(Context context) { super(context); // TODO Auto-generated constructor stub } public FoundWebView(Context

Android获取系统外置存储卡路径的方法

android系统可通过Environment.getExternalStorageDirectory()获取存储卡的路径,但是现在有很多手机内置有一个存储空间,同时还支持外置sd卡插入,这样通过Environment.getExternalStorageDirectory()方法获取到的就是内置存储卡的位置,需要获取外置存储卡的路径就比较麻烦,这里借鉴网上的代码,稍作修改,在已有的手机上做了测试,效果还可以,当然也许还有其他的一些奇葩机型没有覆盖到. package com.example.g

Android -- 系统信息(内存、cpu、sd卡、电量、版本)获取

内存(ram)                                                                              android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息: public void getTotalMemory() { String str1 = "/proc/meminfo"; String str2=""; try { FileRead