• android获取内置和外置SD卡路径


    本文将介绍Android真机环境下如何获取内置和外置SD卡路径。

    测试环境:三星Note3,其他手机待测试。。。

    所需权限(AndroidManifest.xml文件里)

    [html] view plain copy
     
    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  


    获取路径代码(MainActivity.java文件)

    [java] view plain copy
     
    1. package com.example.androidtest;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.File;  
    5. import java.io.InputStream;  
    6. import java.io.InputStreamReader;  
    7. import java.util.ArrayList;  
    8. import java.util.List;  
    9.   
    10. import android.os.Bundle;  
    11. import android.os.Environment;  
    12. import android.app.Activity;  
    13. import android.view.Menu;  
    14.   
    15. public class MainActivity extends Activity {  
    16.   
    17.     @Override  
    18.     protected void onCreate(Bundle savedInstanceState) {  
    19.         super.onCreate(savedInstanceState);  
    20.         setContentView(R.layout.activity_main);  
    21.   
    22.         StringBuilder log = new StringBuilder();  
    23.         String inPath = getInnerSDCardPath();  
    24.         log.append("内置SD卡路径:" + inPath + " ");  
    25.           
    26.         List<String> extPaths = getExtSDCardPath();  
    27.         for (String path : extPaths) {  
    28.             log.append("外置SD卡路径:" + path + " ");  
    29.         }  
    30.         System.out.println(log.toString());  
    31.     }  
    32.       
    33.     /** 
    34.      * 获取内置SD卡路径 
    35.      * @return 
    36.      */  
    37.     public String getInnerSDCardPath() {    
    38.         return Environment.getExternalStorageDirectory().getPath();    
    39.     }  
    40.   
    41.     /** 
    42.      * 获取外置SD卡路径 
    43.      * @return  应该就一条记录或空 
    44.      */  
    45.     public List<String> getExtSDCardPath()  
    46.     {  
    47.         List<String> lResult = new ArrayList<String>();  
    48.         try {  
    49.             Runtime rt = Runtime.getRuntime();  
    50.             Process proc = rt.exec("mount");  
    51.             InputStream is = proc.getInputStream();  
    52.             InputStreamReader isr = new InputStreamReader(is);  
    53.             BufferedReader br = new BufferedReader(isr);  
    54.             String line;  
    55.             while ((line = br.readLine()) != null) {  
    56.                 if (line.contains("extSdCard"))  
    57.                 {  
    58.                     String [] arr = line.split(" ");  
    59.                     String path = arr[1];  
    60.                     File file = new File(path);  
    61.                     if (file.isDirectory())  
    62.                     {  
    63.                         lResult.add(path);  
    64.                     }  
    65.                 }  
    66.             }  
    67.             isr.close();  
    68.         } catch (Exception e) {  
    69.         }  
    70.         return lResult;  
    71.     }  
    72.   
    73.     @Override  
    74.     public boolean onCreateOptionsMenu(Menu menu) {  
    75.         // Inflate the menu; this adds items to the action bar if it is present.  
    76.         getMenuInflater().inflate(R.menu.activity_main, menu);  
    77.         return true;  
    78.     }  
    79.   
    80. }  


    其中,line.contains("extSdCard")判断部分有待进一步验证!

    打印结果:

    1. 插入一张外置SD卡后

    [plain] view plain copy
     
    1. 内置SD卡路径:/storage/emulated/0  
    2. 外置SD卡路径:/storage/extSdCard  

    2. 取出外置SD卡后

    [plain] view plain copy
     
      1. 内置SD卡路径:/storage/emulated/0  
  • 相关阅读:
    angularJs项目实战!02:前端的页面分解与组装
    angularJs项目实战!01:模块划分和目录组织
    django admin 导出数据简单示例
    django 学习之model操作(想细化)
    6.11大杂烩。。
    InlineModelAdmin对象的学习
    django-salmonella的使用
    python 保留两位小数
    Django 时间与时区设置问题
    Django学习
  • 原文地址:https://www.cnblogs.com/EasyLive2006/p/7423485.html
Copyright © 2020-2023  润新知