/** * 方法一 * @return */ public String getSDPath1() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); // 判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory();// 获取跟目录 return sdDir.toString(); } else { return null; } }
1、API>=23 时方法一无效(暂未测试)
2、有些厂商的Rom改动太多,对相关原生API的支持存在问题,这时方法一可能会存在问题。
方法二
public String getSDPath() { String path; path=getStoragePath(context,false); if(path==null){ path=getStoragePath(context,true); } return path; } /** * 获取内部存储和外部存储(内外sd卡)的路径, * 参数 is_removable为false时得到的是内置sd卡路径,为true则为外置sd卡路径。 * @param mContext * @param is_removale * @return */ private static String getStoragePath(Context mContext, boolean is_removale) { StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE); Class<?> storageVolumeClazz = null; try { storageVolumeClazz = Class.forName("android.os.storage.StorageVolume"); Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList"); Method getPath = storageVolumeClazz.getMethod("getPath"); Method isRemovable = storageVolumeClazz.getMethod("isRemovable"); Object result = getVolumeList.invoke(mStorageManager); final int length = Array.getLength(result); for (int i = 0; i < length; i++) { Object storageVolumeElement = Array.get(result, i); String path = (String) getPath.invoke(storageVolumeElement); boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement); if (is_removale == removable) { return path; } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; }
相关推荐
在Android API中,`Environment`类提供了对外部存储的访问接口,如`getExternalStorageDirectory()`方法返回内置的外部存储根目录,但这并不总是指向真正的外置SD卡。因此,如果需要获取外置SD卡的路径,通常需要...
本文将总结两种在Android系统中获取内外SD卡路径的方法。 首先,我们来看第一种方法,这是较为简单直接的方式,通常适用于大部分场景: 1. **获取内置SD卡路径**: 可以通过调用`System.getenv("EXTERNAL_STORAGE...
本文将深入探讨如何在Android平台上获取内外置存储卡的相关信息,包括路径、判断其是否存在以及如何加载SD卡。 首先,我们要了解Android设备的存储结构。Android系统通常包含两种类型的存储:内部存储(Internal ...
首先,我们来了解一下获取SD卡路径的两种常见方法: 1. **硬编码路径**: ```java private String folder = "/sdcard/DCIM/Camera/"; // 不推荐 ``` 这种方式直接写死SD卡路径,虽然简单,但并不适用于所有设备...
在本篇文章中,我们将深入探讨如何使用一种新颖的方法来获取Android设备上的SD卡路径,这种方法与传统的做法有所不同,最大的特点是无需在AndroidManifest.xml文件中声明额外的权限。 ### 一、背景介绍 在Android...
在Android系统中,读取外置和内置存储卡的路径以及获取它们的大小是常见的需求,尤其是在处理多媒体文件或者管理应用程序数据时。本教程将详细解释如何实现这一功能。 首先,我们要了解Android对存储卡的分类。在...
Android设备通常有两种类型的存储空间:内部存储(Internal Storage)和外部存储(External Storage),通常所说的SD卡就是外部存储的一部分。在Android 6.0(API级别23)之后,对存储访问有了更严格的权限管理,...
在API级别17及以上,可以使用`Environment.getExternalStorageDirectory()`方法获取外部存储的根目录,但请注意,这可能返回内部存储而非真正的外部SD卡。为了获取内置存储的根路径,我们可以使用如下代码: ```...
Android设备通常有两种类型的存储:内部存储和外部存储。内部存储是设备自身的存储空间,而外部存储包括SD卡和通过OTG连接的U盘。在Android 6.0(API级别23)及更高版本,用户需要在运行时授予读写外部存储的权限(`...
在Android N上并没有提供直接的方法获取外置SD卡或挂载U盘路径,可以通过下面方法获取内置sd卡路径 Environment.getExternalStorageDirectory().getAbsolutePath(); 通过查看getExternalStorageDirectory源码发现,...
在Android系统中,管理和操作文件,尤其是涉及到SD卡(外置和内置存储卡)的文件操作,是开发者经常面临的一项任务。这篇资料主要探讨的是如何在Android应用中获取SD卡的路径以及计算其存储大小。以下是一些关键知识...
本篇文章将主要探讨Android中的内部存储与外部存储之一——SD卡存储的基本概念、特点及其使用方法。 #### 二、Android内部存储 Android内部存储指的是应用自身的私有存储空间,通常位于`/data/data/<package name>...
标题“Android判断获取内置外置sd卡demo”暗示我们将关注如何在Android应用中识别并访问这两种类型的存储。下面是一些关键的API和方法: 1. **获取内部存储路径**: - `Context.getFilesDir()`:返回应用程序私有...
本篇将详细介绍如何在Android应用中获取这两种存储路径,并讨论其兼容性问题。 首先,Android设备通常有两个主要的存储区域:内部存储(Internal Storage)和外部存储(External Storage)。内部存储通常较小,用于...
1. **获取SD卡路径**:Android提供`Environment.getExternalStorageDirectory()`方法来获取外部存储的根目录,但这通常只返回第一张SD卡的路径。在Android 6.0(API级别23)及以上版本,需要动态请求`WRITE_EXTERNAL...
下面将详细介绍这两种方法及其应用场景。 **1. SD卡文件存储** SD卡文件存储通常用于存储大容量的数据,如多媒体文件、缓存文件或用户生成的文件。Android提供了`Environment`类来获取SD卡(外部存储)的相关路径...
在Android中,可以使用`Environment.getExternalStorageDirectory()`方法获取到SD卡的根目录。然后,我们可以使用`java.io.File`类来遍历目录中的文件和子目录。以下是一个基础的文件浏览函数示例: ```java public...
Android提供了多种方法来获取SD卡的路径。例如,`Environment.getExternalStorageDirectory()`返回的是主要的外部存储空间,这可能是内部存储或SD卡。如果设备有第二个SD卡,可以使用`Environment....
Android提供了两种基本的文件存储方式:内部存储和外部存储。内部存储的数据通常对用户不可见,而外部存储则允许用户访问甚至修改文件。内部存储适用于应用私有的数据,如用户配置或应用程序状态。使用`getFilesDir...
在Android开发中,获取设备的存储空间信息是常见的需求,比如SD卡(外部存储)和手机内部ROM(内部存储)的总容量以及可用容量。本文将详细解释如何使用Java和Android SDK来实现这一功能。 首先,我们要明确Android...