您的位置:首页 > 移动开发 > Android开发

Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?

2016-03-08 23:54 489 查看
转自:http://blog.csdn.net/zhouyingge1104/article/details/44311581

这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的目录。用的是  Environment.getExternalStorageDirectory() 这个方法,然后在获取的目录中新建一个hkapp文件夹,用来存放下载的apk文件。

那么,这个hkapp文件到底是在那块存储区域呢?

一开始,看看网上的API,已经这个方法的字面意思,想当然地以为它就是获取SD卡上的目录,而不是手机的内部存储。当然,除了望文生义之外,似乎还有确凿的证据支持我的观点,那就是在运行的时候报错,提示权限不足,也就是要配置访问外部存储的权限:

[html] view
plain copy

 





<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
plain copy

 





<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文件也顺利地进去了。

那么,到这里,有点错乱了,这个”getExternalStorageDirectory()“ 到底是获取外部存储还是内部存储呢?

=========================================================
原因详见原博客的评论和本博客转来的文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: