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

  在开发应用的过程中,经常会遇到需要获取设备存储路径的问题。而从网上看到的很多方法获取到的都是内置存储位置,并非外置SD卡路径,因此我推荐使用反射的机制来获取外置存储的路径。

  通常,使用Environment.getExternalStorageDirectory()获取的都是内置存储的路径;其他方法如下(由于不同的设备厂商可能进行修改,因此不同设备可能有所不同,以下提供几个方法仅供参考):
  【由于以下的这些方法一般不可见,因此需要通过反射机制调用】

说明:

1、路径都可以获取到,若存在外置存储卡,路径显示为具体的/storage/3035-3633;若不存在,显示/storage/sdcard0(具体是什么,由底层控制的)
2、由上述可知,不能根据路径来判断是否可用;因此需要getExternalStoragePathState()获取状态来判断是否可用,或创建该文件由file.exists()判断是否存在。
困扰已久的问题,终于得到解决!

补充: 关于反射的使用,主要步骤如下:

(1)Class<?> mClass = Class.forName("android.os.Environment");    //加载类

(2)Method method = mClass.getMethod("getInternalStoragePath", null);  //第二个参数:表示调用方法的参数,当前方法不需要参数,因此null.
   if(!method.isAccessible()){            //检测方法是否可访问.
    method.setAccessible(true);    
   }

(3)method.invoke(null, null);    //第一个参数:调用方法的实例     第二个参数:该方法需要的参数.

原文地址:https://www.cnblogs.com/sparrowlhl/p/11122159.html

时间: 2024-10-29 10:46:15

Android获取外置SD卡存储路径的方法的相关文章

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

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

Android开发之sd卡存储和机身存储的路径获取

来源:https://blog.csdn.net/anjingshuai/article/details/84682779 开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示 // 判断是否有SD卡   private static boolean ExistSDCard() {   if (android.os.Environment.getExternalStorageState().equals(   android.os.Environment.MEDIA_MOUNTED

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

本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) [html] view plain copy <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 获取路径代码(MainActivity.java文件) [java] view plain copy pa

Android手机自带内部存储路径的获取 (转)

转自:http://my.oschina.net/liucundong/blog/288183 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro SD Card,原名Trans-flash Card(TF卡),2004年正式更名为Micro SD Card),但是机身自带了一个内置存储卡(也就是eMMC存储,大小为2G). 我把这个手机用数据线插到电脑上,也会看到盘符,通过安装「R.E 管理器」等文件管理应用,也可以管理文件,并且能看到该存

获取手机SD卡路径(国产神机多个SD卡)

通过系统的 Environment.getExternalStorageDirectory().getAbsoluteFile(); 只能得到系统的SD卡路径,对于对个SD卡的国产神机,想得到外部SD卡就无能为力了.   下面介绍一个编写的工具类,通过反射得到系统隐藏的得到所有挂载路径方法获取所有SD卡路径: package com.itheima.mobilesafe.utils; import java.lang.reflect.InvocationTargetException; impo

Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)

本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.com/JinBoy23520/CoderToDeveloperByTCLer 一丶慨述 本周的学习内容是Android存储,要求:数据库Sqlite相关操作,常用的文件存取方式,以及实用场景学习,主要学习Sqlite,SD卡文件操作,SharedPreference 二丶效果演示:         

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

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

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

android 如何在sd卡下创建指定的多层文件夹

我们在很多情况下都需要在sd卡目录下创建子目录存放图片文件之类的,之前也有人问我怎么在sd卡下创建子文件夹,今天就讲一个例子,就是当程序发生异常的时候,怎么把异常写在指定的文件中,当然在这里只讲如何创建文件夹, 代码 public class MainActivity extends Activity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle