android获取内置和外置SD卡路径 - z

博观而约取,厚积而薄发。这篇文章主要讲述android获取内置和外置SD卡路径 - z相关的知识,希望能为你提供帮助。
【android获取内置和外置SD卡路径 - z】本文将介绍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  +  "\r\n");    
  25.                    
  26.                 List< String>   extPaths  =  getExtSDCardPath();    
  27.                 for  (String  path  :  extPaths)  {   
  28.                         log.append("外置SD卡路径:"  +  path  +  "\r\n");    
  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   

    推荐阅读