sd卡

Android判断是否存在外置SD卡(获取手机所有存储设备的路径)

人盡茶涼 提交于 2019-12-05 18:44:38
获取手机里所有存储设备盘符,首先需要得到挂载在手机上的有哪些盘符,这里需要用到一个被系统隐藏的方法, 即StorageManager下的getVolumePaths()方法。具体通过反射得到。 方法返回值为字符串数组, getVolumeList返回所有相关信息 StorageVolume: mStorageId=131073 mPath=/storage/external //盘符(路径) mDescriptionId=17040902 mPrimary=false mRemovable=true //是否可卸载,内置SD卡无法卸载,外置SD卡可以卸载,据此可判断是否存在外置SD卡, //这样在某些APP中可以将某些数据优先存储到外置SD卡,优化存储空间资源的分配。如相机 mEmulated=false //是否是内置SD卡 mMtpReserveSpace=0 mAllowMassStorage=true mMaxFileSize=0 mOwner=null mUuid=4041-5DA0 mUserLabel=null mState=mounted //是否已载入(可用) public class StorageUtils { /* 获取全部存储设备信息封装对象 */ public static ArrayList<Volume> getVolume (Context

SD卡读写之FileNotFoundException: /storage/emulated/0object.txt: open failed: ENOENT (No such file or dir

房东的猫 提交于 2019-12-05 18:42:53
读写sd卡中的文件按照如下步骤:1调用Environment的getExternalStorageState()方法判断手机上是否插入了sd卡,并且应用程序具有读写SD卡的能力 //如果手机已经插入了SD卡,且具有读写sd卡的能力,下面的语句将会返回true Environment.getExternalStorageState().equals(Envronment.MEDIA_MOUNTED) 2)调用environment的getExternalStorageDIrectory()方法获取外部存储器,也就是SD卡的目录 3)使用FileInputStream、FileOUtputStream FileReader或者FileWriter来读写sd卡中的文件 注册权限 <--!在SD卡中创建与删除文件权限--> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/> <--!向SD卡写入数据的权限---> <uses-permission android:name="androd.permission.WRITE_EXTERNAL_STORAGE"/> <--!读取数据的权限---> <uses-permission android:name="android

Android存储空间讲解

旧城冷巷雨未停 提交于 2019-12-05 18:39:58
http://blog.fidroid.com/post/android/ru-he-zheng-que-huo-de-androidnei-wai-sdqia-lu-jing 如何正确获得Android内外SD卡路径 方法一 方法二 外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考虑外置sd卡的路径问题。除了开发文件管理类的应用之外,其他应用使用 Enviroment 这个类中的一些静态方法就能满足需要。但也有一些特殊需求需要用到外置sd卡路径,那怎么才能准确获得外置sd卡的路径呢? 方法一 //内置sd卡路径 String sdcardPath = System . getenv ( "EXTERNAL_STORAGE" ); //内置sd卡路径 String sdcardPath = Environment . getExternalStorageDirectory (). getAbsolutePath (); //外置置sd卡路径 String extSdcardPath = System . getenv ( "SECONDARY_STORAGE" ); 在Enviroment类的源码中获得sd卡路径其实也是通过 System.getnv() 方法来实现的,如隐藏的方法: /** {

Android N获取外置SD卡或挂载U盘路径

爱⌒轻易说出口 提交于 2019-12-05 18:36:32
在Android N上并没有提供直接的方法获取外置SD卡或挂载U盘路径,可以通过下面方法获取内置sd卡路径 Environment.getExternalStorageDirectory().getAbsolutePath(); 通过查看getExternalStorageDirectory源码发现,Android只是没有公开的接口获取而已 public static File getExternalStorageDirectory() { throwIfUserRequired(); return sCurrentUser.getExternalDirs()[0]; } 内置sd卡取的sCurrentUser.getExternalDirs()中的第一个值,通过查看StorageManager公有的方法,发下StorageManager@getStorageVolumes也能获取到所有的StorageVolume,但是通过StorageVolume对象只能调用到一些简单的方法,发现StorageVolume有很多隐藏方法如下: frameworks/base/core/java/android/os/storage/StorageVolume.java /** * Returns true if the volume is removable. * * @return is

Android 6.0区别U盘和SD卡设备

你说的曾经没有我的故事 提交于 2019-12-05 18:35:51
public static boolean isSdcardExists (Context context) { StorageManager storageManager = StorageManager. from (context.getApplicationContext()); List<VolumeInfo> volumes = storageManager.getVolumes(); for (VolumeInfo volInfo : volumes) { DiskInfo diskInfo = volInfo.getDisk(); if (diskInfo != null && diskInfo.isSd()) { String sdcardState = volInfo.getEnvironmentForState(volInfo.getState()); if (Environment.MEDIA_MOUNTED.equals(sdcardState)) { return true ; } } } return false ; } public static int isudiskExists (Context context) { int num = 0 ; StorageManager storageManager = StorageManager.

如何正确获得Android内外SD卡路径

纵饮孤独 提交于 2019-12-05 18:33:11
PS:看了9年的小说,自己开始动手写了一本,请各位猿们动动手指,点击下,有起点账号的可以收藏下!! 《武意长存》 忘了这篇文章是在哪里看到了,当时就copy保存了下来,今天转载出来下。 外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考虑外置sd卡的路径问题。除了开发文件管理类的应用之外,其他应用使用 Enviroment 这个类中的一些静态方法就能满足需要。但也有一些特殊需求需要用到外置sd卡路径,那怎么才能准确获得外置sd卡的路径呢? 方法一 //内置sd卡路径 String sdcardPath = System . getenv ( "EXTERNAL_STORAGE" ); //内置sd卡路径 String sdcardPath = Environment . getExternalStorageDirectory (). getAbsolutePath (); //外置置sd卡路径 String extSdcardPath = System . getenv ( "SECONDARY_STORAGE" ); 在Enviroment类的源码中获得sd卡路径其实也是通过 System.getnv() 方法来实现的,如隐藏的方法: /** {@hide} */ public static File

关于Android手机获取SD卡路径的问题

自闭症网瘾萝莉.ら 提交于 2019-12-05 17:52:46
在开发的时候经常会使用到SD卡,比如图片缓存等需要大的存储空间的时候,Android中获取SD卡的接口只有一个 String path= Environment.getExternalStorageDirectory().getAbsolutePath(); 从接口的命名上来看是获取外置的SD卡,从国内手机的发展来看,原来手机本身存储小,都会外置一个SD卡,通过上面的接口获取外置SD卡的路径很容易理解,同时由于SD卡是可插拔的,所以又有了下面的这个接口 String state = Environment.getExternalStorageState(); //是否挂载 boolean result = state.equals(Environment.MEDIA_MOUNTED) 但是现在的手机基本上都没有外置的SD卡了,那么现在的手机通过上面的接口获取到内置存储的路径一般是 /storage/emulated/0 ,那么这个时候判断SD卡是否挂载的接口好像就没什么用了,鉴于上面的两种情况,我们在使用SD卡的时候要怎么做判断呢,那么有没有什么判断来判断一个手机有没有外置的SD卡呢,我发现了下面这个接口: boolean isRemove = Environment.isExternalStorageRemovable(); 这个接口的意思很明确了,就是判断外齿存储卡可不可移除

如何区分手机内置存储卡与外置存储卡

你说的曾经没有我的故事 提交于 2019-12-05 17:50:02
android系统自从升级到2.3以后,多一个功能,可以判断存储卡是否是可以卸载的。Environment.isExternalStorageRemovable(),通过此方法我们可以知道手机上的存储卡是手机自带的还是外边可插拔的SD卡,当然此种情况是指只有一个卡的情况。 但是现在国内的大多数手机都支持双存储卡: 1、即手机内置的有2G、4G或8G的内部存储卡,默认安装的应用与数据都会到这个卡中,用户不买可插拔的SD卡,也可使用。 2、手机的存储空间毕竟有限,所以手机也支持外置的SD卡,或者叫TF卡、扩展卡等。 那么这时候问题就来了,在程序中我们如何可以判断哪个路径对应的是内置存储卡,哪个对应的是外置存储卡。有人说用Environment.getExternalStorageDirectory()方法得到不就是SD卡吗,这种方法明显不适用的,尤其在4.0以后。 恰恰相反,使用上面的方法得到的大多数是手机内部对应的SD卡(/mnt/sdcard 4.1系统以下,4.1直接变为/storage/sdcard0), 下面我总结了一些较常见的外部SD卡的路径: /mnt/sdcard2 /mnt/sdcard-ext /mnt/ext_sdcard /mnt/sdcard/SD_CARD /mnt/sdcard/extra_sd /mnt/extrasd_bind /mnt/sdcard

android 手机获取外置SD卡路径

谁说我不能喝 提交于 2019-12-05 17:48:59
一部分手机将eMMC存储挂载到 /mnt/external_sd 、/mnt/sdcard2 等节点,而将外置的SD卡挂载到 Environment.getExternalStorageDirectory()这个结点。 此时,调用Environment.getExternalStorageDirectory(),则返回外置的SD的路径。 而另一部分手机直接将eMMC存储挂载在Environment.getExternalStorageDirectory()这个节点,而将真正的外置SD卡挂载到/mnt/external_sd、/mnt/sdcard2 等节点。 此时,调用Environment.getExternalStorageDirectory(),则返回内置的SD的路径。 至此就能解释为都是无外置SD卡的情况下,有的手机调用 打印 Environment.getExternalStorageState(),却返回 ” removed “,在其他手机就有可能返回:“ mounted ” 原因已经知道了,可是如何在无外置SD卡的时候,获取到这个内置eMMC存储的具体路径呢? 既然使用 Environment.getExternalStorageDirectory() 获取到的是外置SD卡路径,但是我又没有插入SD卡,这个时候我想使用内置的eMMC存储来存储一些程序中用到的数据

Android获取外置SD卡路径

最后都变了- 提交于 2019-12-05 17:46:49
SD卡路径没有找到直接获取的方法,现在移植Android7.1的系统,以前在Android5.1上的应用不能直接用了 Android7.1换一张SD卡,路径又变了 兼容获取SD卡路径 //遍历storage路径下的所有文件 /****获取SD卡路径****/ public String getSDCardPath (){ String path = "" ; try { File file = new File( "storage" ); if (file.exists()){ String []list; list = file.list(); if (list == null ) return "" ; for ( int i = 0 ; i < list.length; i++) { if (list[i].indexOf( "-" ) > 0 ){ path = "/storage/" + list[i]; break ; } else if (! "emulated" .equals(list[i]) && ! "self" .equals(list[i])){ path = "/storage/" + list[i]; } } } } catch (Exception e){ e.printStackTrace(); } System.out.println(