Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?若无SD卡,就用内部。
2015-08-05 09:31
513 查看
Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?若无SD卡,就用内部。
这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的目录。用的是 Environment.getExternalStorageDirectory() 这个方法,然后在获取的目录中新建一个hkapp文件夹,用来存放下载的apk文件。那么,这个hkapp文件到底是在那块存储区域呢?
一开始,看看网上的API,已经这个方法的字面意思,想当然地以为它就是获取SD卡上的目录,而不是手机的内部存储。当然,除了望文生义之外,似乎还有确凿的证据支持我的观点,那就是在运行的时候报错,提示权限不足,也就是要配置访问外部存储的权限:
[html] view
plaincopy
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
嗯,看上去就是在获取SD卡了...
我有两个手机:
1. 华为C8812,带SD卡,接上电脑之后显示有两个存储设备,并且识别为磁盘,其中,H盘是手机自带的,而I盘就是后来放进去的SD卡。
在程序中用了getExternalStorageDirectory()方法之后,发现hkapp文件夹的实际位置是在I盘,也就是SD卡上,OK,看上去这个getExternalStorageDirectory方法确实是获取了SD卡,而不是手机自带的存储。
2. 华为C8817,不带SD卡,接上电脑之后只显示一个设备,并且,是作为设备整体来识别,而不单单是个磁盘。
在这个C8817上运行程序之前,我是有点小担心的,因为这个手机没有SD卡啊,会不会运行到一半报错呢?那么实际的情况是,确实报错了,但报的是没有权限访问外部存储的错,于是也把权限加上去:
[html] view
plaincopy
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
然后就想了,给了你权限又有什么用呢?反正你终究是没有SD卡在里面,必然要继续报错嘛。于是重新运行,发现整个下载过程一切正常,没有报错!hkapp文件夹也正常建立了,但位置是在我原本以为的”内部存储“中,apk文件也顺利地进去了。
相关文章推荐
- Android4.0 Launcher拖拽原理分析
- android4.4.2源码和内核编译——图文详细记录
- android 消息提示框点击“确定”按钮后,不能及时关闭提示框的解决方案
- Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)
- android应用无法运行报错记录(持续更新)
- Android 布局文件
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- android view startAnimation后setVisibility没有效果
- Android Studio系列教程四--Gradle基础
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- android 获取文件的扩展名和去掉文件扩展名的小例子
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android Looper And Hander 机制剖析 - 03
- Android 圆弧形进度条 自定义View
- Android 省市县 三级联动(android-wheel的使用)
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View