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

其中,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
时间: 2024-12-28 20:34:02

android获取内置和外置SD卡路径 - z的相关文章

获取不同机型外置SD卡路径

/** * 运行挂载命令.返回挂载的地址.然后将地址解析 */ private void getExtSDCardPath() { try { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("mount"); InputStream is = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(is); Stri

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

在开发应用的过程中,经常会遇到需要获取设备存储路径的问题.而从网上看到的很多方法获取到的都是内置存储位置,并非外置SD卡路径,因此我推荐使用反射的机制来获取外置存储的路径. 通常,使用Environment.getExternalStorageDirectory()获取的都是内置存储的路径:其他方法如下(由于不同的设备厂商可能进行修改,因此不同设备可能有所不同,以下提供几个方法仅供参考): [由于以下的这些方法一般不可见,因此需要通过反射机制调用] 说明: 1.路径都可以获取到,若存在外置存储卡

Android获取机身存储、内置SD卡与外置TF卡路径

获取机身存储路径(可以通过openFileInput,openFileOutput进行操作) String path=Environment.getDataDirectory().getAbsolutePath();返回/data 获取内置SD卡路径: public String getStorageDir(){ if(!(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))){ return "&quo

关于手机的内置SD卡与外置SD卡

对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Environment.isExternalStorageRemovable()来判断,如果返回true就是外置的,因为外置的才能卸载.(但是我目前只遇到过安卓4.4系统才有内置SD卡,所以Environment.getExternalStorageDirectory()在2.3系统上当外置的用吧,遇到特殊机

Android手机外置SD卡(TF卡)的获取方法

Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此时这张卡仍处于手机的扩展部分.后来,随着手机的发展以及存储能力的增加,这张外置SD卡,逐渐成为了手机的一部分,不再允许可挺拔了,当然现在依然有的手机允许对存储进行拓展,比如三星等. 那张拓展的存储卡,现在叫做TF卡,且不是所有的手机都支持它,但是有时候有些奇葩需求偏要优先存储在TF卡里面,这叫不得不

Android 获取SD卡路径和判断SD卡是否存在

android获取sd卡路径方法: 不建议直接写死android sd卡的路径. public String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getEx

Android 4.4 安卓系统突破限制让所有应用程序可操作外置SD卡

前提是手机需已root. 然后使用文本编辑器打开/system/etc/permissions目录下的“platform.xml”文件(挂载读写), 在<permission name="android.permission.WRITE_EXTERNAL_STORAGE" > < group gid="sdcard_rw" /> 下面添一行 <group gid="media_rw" />(注意段首对齐,&qu

android获取sd卡路径方法

public String getSDPath(){  File sdDir = null;  boolean sdCardExist = Environment.getExternalStorageState()  .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在  if (sdCardExist)  {  sdDir = Environment.getExternalStorageDirectory();//获取跟目录  }

安卓手机的加密设备和加密外置SD卡

手机一旦被偷或者遗失,那么隐私就会泄露了,安卓手机中有"加密设备"和"加密外置sd卡"的功能.那么这两项功能有什么用有什么区别呢? 加密设备 加密设备后,内置SD卡上的数据就全部被加密了,这部分主要用来保护通讯录及短信隐私.加密设备后,刷机恢复出厂设置都无法解密数据. 加密外置SD卡 加密外置SD卡可保护SD卡上的所有数据,这部分数据主要用来保护用户的一些图片.隐私文件,可防止艳照门.加密后的SD卡,如果没有解密,即使取出都是无法读取卡内内容的,同样,刷机.恢复出厂