zoukankan      html  css  js  c++  java
  • Android获取系统外置存储卡路径的方法

    android系统可通过Environment.getExternalStorageDirectory()获取存储卡的路径。可是如今有非常多手机内置有一个存储空间。同一时候还支持外置sd卡插入,这样通过Environment.getExternalStorageDirectory()方法获取到的就是内置存储卡的位置。须要获取外置存储卡的路径就比較麻烦,这里借鉴网上的代码,稍作改动,在已有的手机上做了測试。效果还能够。当然或许还有其它的一些奇葩机型没有覆盖到。

    package com.example.getpath;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		getPath2();
    	}
    
    	@SuppressLint("SdCardPath")
    	public String getPath2() {
    		String sdcard_path = null;
    		String sd_default = Environment.getExternalStorageDirectory()
    				.getAbsolutePath();
    		Log.d("text", sd_default);
    		if (sd_default.endsWith("/")) {
    			sd_default = sd_default.substring(0, sd_default.length() - 1);
    		}
    		// 得到路径
    		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") && line.contains("/mnt/")) {
    					String columns[] = line.split(" ");
    					if (columns != null && columns.length > 1) {
    						if (sd_default.trim().equals(columns[1].trim())) {
    							continue;
    						}
    						sdcard_path = columns[1];
    					}
    				} else if (line.contains("fuse") && line.contains("/mnt/")) {
    					String columns[] = line.split(" ");
    					if (columns != null && columns.length > 1) {
    						if (sd_default.trim().equals(columns[1].trim())) {
    							continue;
    						}
    						sdcard_path = columns[1];
    					}
    				}
    			}
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		Log.d("text", sdcard_path);
    		return sdcard_path;
    	}
    }
    



  • 相关阅读:
    项目开发环境
    angluarjs2入门学习资源
    mosquitto安装和测试
    loj#6031. 「雅礼集训 2017 Day1」字符串(SAM 广义SAM 数据分治)
    loj#6030. 「雅礼集训 2017 Day1」矩阵(贪心 构造)
    loj#6029. 「雅礼集训 2017 Day1」市场(线段树)
    HDU4609 3-idiots(生成函数)
    loj#6436. 「PKUSC2018」神仙的游戏(生成函数)
    BZOJ3028: 食物(生成函数)
    洛谷P4841 城市规划(生成函数 多项式求逆)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6775333.html
Copyright © 2011-2022 走看看