Android内置和外置SD卡的位置获取
public class StorageUtils {
private static String TAG="123"; // 获取主存储卡路径 内置内存卡路径
public static String getPrimaryStoragePath(Context context) {
try { StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths");
String[] paths = (String[]) getVolumePathsMethod.invoke(sm);
// first element in paths[] is primary storage path
return paths[0];
} catch (Exception e) {
Log.e(TAG, "getPrimaryStoragePath() failed", e);
}
return null;
} //获取可用的所有外置内存卡路径
public static List<String> getSecondaryStoragePath(Context context) {
try {
List<String> sdPaths=new ArrayList<>();
StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths");
String[] paths = (String[]) getVolumePathsMethod.invoke(sm);//获取所有sd卡路径
if(paths.length>=1){
for (int i = 1; i <paths.length ; i++) {
if(getStorageState(context,paths[i])){
sdPaths.add(paths[i]);
}
}
} return sdPaths;
} catch (Exception e) {
Log.e(TAG, "getSecondaryStoragePath() failed", e);
}
return null;
} // 判断存储卡的路径是否可用
public static boolean getStorageState(Context context,String path) {
try {
StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
Method getVolumeStateMethod = StorageManager.class.getMethod("getVolumeState", new Class[] {String.class});
String state = (String) getVolumeStateMethod.invoke(sm, path);
if(state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)||state.equals(Environment.MEDIA_MOUNTED)){
return true;
}
return false;
} catch (Exception e) {
Log.e(TAG, "getStorageState() failed", e);
return false;
}
} }
Android内置和外置SD卡的位置获取的更多相关文章
- android获取内置和外置SD卡路径 - z
本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) <uses-permi ...
- Android手机外置SD卡(TF卡)的获取方法
Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此 ...
- Android开发获取多个存储空间的路径(内置SD卡以及外置SD卡)
Android开发中经常会遇到多存储空间的问题,包括内置存储路径以及外置SD卡,而且有的时候会有多张外置SD卡,此时就需要获取不同的SD卡路径,然后根据需要来写入或者读出文件. 此处给出常用的SD卡工 ...
- 关于手机的内置SD卡与外置SD卡
对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Envir ...
- android4.0 中关于内外置sd卡的获取及读写权限问题
from://http://blog.chinaunix.net/uid-26727976-id-3146895.html 在2.x的版本中,在manifest中配置的权限android.permis ...
- Android 5.1.1在外置SD卡中创建文件夹
Android 4.4之后WRITE_MEDIA_STORAGE 权限仅提供给系统应用,不再授予第三方App,WRITE_EXTERNAL_STORAGE 权限,仅仅用于授权用户写 primary e ...
- Android操作外置SD卡和U盘相关文章
Android设备与外接U盘实现数据读取操作https://blog.csdn.net/true100/article/details/77775700 usbdisklibhttps://githu ...
- Android应用正确使用扩展SD卡,特别是安卓4.4以后的版本
Android 开发时如何正确获取使用扩展存储路径 在 2.x 版本中,Android设备都是单存储,第三方App写文件,必须申请 WRITE_EXTERNAL_STORAGE 权限: 在4.0之后, ...
- Android 下载文件及写入SD卡
Android 下载文件及写入SD卡,实例代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
随机推荐
- 转 : 配置 mysql-advanced-5.6.21-winx64 免安装版
mySQL包:mysql-advanced-5.6.21-winx64.zip 下载地址:https://edelivery.oracle.com/EPD/Search/handle_go 服务器版本 ...
- Volley请求图片
ImageRequest imageRequest = new ImageRequest(Config.USER_ASSETS_URL + md5(userid) + "/images/av ...
- DM8127 更改调试串口为UART2
1.uboot修改 1)修改宏定义 /*include/config/ti8148_evm.h*/ #define CONFIG_SYS_NS16550_COM2 0x48024000 #define ...
- oracle显示数据库名和表名
oracle查看表名 select table_name from user_tables; select table_name from dba_tables; select * from all_ ...
- python爬西刺代理
爬IP代码 import requests import re import dauk from bs4 import BeautifulSoup import time def daili(): p ...
- app端内容播放,web端的玩具,app通过websocket远程遥控玩具播放内容,玩具管理页面
一.app端内容播放 下载代码 https://github.com/987334176/Intelligent_toy/archive/v1.0.zip 注意:由于涉及到版权问题,此附件没有图片和音 ...
- Mac os JAVA 开发环境配置简述
本文原文来源:http://blog.csdn.NET/johnstrive/article/details/7791451 1.Mac 自带jdk1.6(本人的机器是这样至于新Mac自带的版本就不清 ...
- Zookeeper 基础、工作流、ZAP协议
ZooKeeper 基础 在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.[1] 我们将在本章中讨论以下主题:1.Architecture(架构)2.Hierarch ...
- 简单的so修改
今天有点小高兴哈,终于能修改so了 虽然只是hello,word..改成了.come,on,men.. 但是感觉也不错了. 只用两个工具. 1.盗版的ida定位可疑代码地址. 2.盗版的ultralE ...
- GCC笔记(警告.优化以及调试选项)
GCC提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-c ...