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;
    	}
    }
    



  • 相关阅读:
    ASP.Net无法连接Oracle的一个案例
    给Oracle添加split和splitstr函数
    笨猪大改造
    设计模式(一)策略模式
    jQuery select 操作全集
    现在的心情
    jquery 自动实现autocomplete+ajax
    c# 配置连接 mysql
    jquery.ajax和Ajax 获取数据
    C# 加密可逆
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6775333.html
Copyright © 2011-2022 走看看