/** * 方法一 * @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 N上并没有提供直接的方法获取外置SD卡或挂载U盘路径,可以通过下面方法获取内置sd卡路径 Environment.getExternalStorageDirectory().getAbsolutePath(); 通过查看getExternalStorageDirectory源码发现,...
android的数据存储主要分为三类: 内部存储:link. 外部存储 sharedpreferences:link. 本文主要介绍外部存储的相关知识。 存储路径:/storage/emulated/0 ...设置存储路径【两种方式①直接写存储路径 ②e
81、获得屏幕像素的两种方法 126 82、ShowDialog(int id); 126 83、透明效果的实现 128 84、根据网络或GPS获得经纬度 128 85、TextView 130 90、获取存储卡和手机内部存储空间 130 91、获得当前应用的UID 131 92、...
MicroSD 卡 ; QWERTY 全键盘; 310 万像素摄像头。 流媒体 支持视频格式: H.264 、流媒体、 3GPP 、 MPEG4 和 Codec 3GP ;支持音频格式: MP3 、 AAC 、 AAC+ 、 W MA 、 MPEG4 、 WAV 、 MIDI 、 REAL 、 AUDIO ...
关于两种方式创建模拟器的SDcard在【Android2D游戏开发之十】有详解 if (Environment.getExternalStorageState() != null) {// 这个方法在试探终端是否有sdcard! if (!file.exists()) {// 判定是否已经...
4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView...
|--android 获取sd卡状态 |--android 设置apn |--android 调节屏幕亮度 |--android 资源uri |--android 还原短信 |--android 重启 |--android中anim文件特效 |--app信息menifest获取(如版本号) |--AsyncQueryHandler...
4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView...
本书是在分析Android源码的基础上展开的,而源码文件所在的路径一般都很长,例如,文件AndroidRuntime.cpp的真实路径就是framework/base/core/jni/AndroidRuntime.cpp。为了书 写方便起见,我们在各章节开头把该...
也就是/sdcard/Android/data/de.robv.android.xposed.installer/cache/downloads/framework,如果没有sd卡,就去内部存储中找相似目录,没有的目录就手动创建。放好后打开xposed,勾选显示过时的版本,重新启动...
关于两种方式创建模拟器的SDcard在【Android2D游戏开发之十】有详解 if (Environment.getExternalStorageState() != null) {// 这个方法在试探终端是否有sdcard! if (!file.exists()) {// 判定是否已经存在手势...
以下命令立即获取所连接设备的屏幕快照,并按照指定路径将其存储在SD卡中。 system( ' adb shell screencap -p /sdcard/screen.png ' ); 以下命令按照指定的路径将其从android设备的SD卡拉入操作系统。 ...
图片、影音和电子书的管理可以方便管理SD卡中的文件。 百度手机助手PC版基本上支持市面上所有的Android设备,可以转换的格式,支持分辨率随意调整,转换速度很快。 总体来说,百度手机助手PC版游戏下载...
然后下一步,选择打包APK文件的存储路径。 第五步,点击finish等待程序签名与APK的生成,结束。 六、网狐荣耀版游戏启动时出现“正在初始化组件”启动失败 【 2017-11-10 08:35:33 】[ 游戏 ] 房间参数加载成功 ...
菲比Phoebe是一种从日语词典文件生成SQLite数据库的工具,主要用于Android应用程序。 Phoebe的目的是为这些应用程序创建数据库,只需下载新的词典文件并运行程序,即可轻松地对其进行更新。词性为了节省空间,对有关...
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...