在阅读真正的问题之前,请先阅读我的问题简介:
在安卓系统中有
internal storage和external storage。不要混淆,因为internal storage涉及到只有应用程序可以访问的文件,而external storage涉及所有应用程序都可以访问的普通文件,这些文件可以在实际的内部存储卡(电话的sd卡)和实际的外部存储卡(可移动的微sd卡)中找到。 我的手机sd卡的路径(你不能删除)是:/storage/emulated/0。 我的微sd卡的路径(您可以插入或删除)是:/storage/external_SD。 请注意:当我使用Environment.getExternalStorageDirectory().getPath()时,我得到:/storage/emulated/0。 这是真正的内部存储卡(手机的sd卡)的路径,而不是真正的外部存储卡(可移动的微sd卡)。
我的问题是,我可以写到“真正的内部存储卡”(手机的sd卡),但不能写到“真正的外部存储卡”(可移动的微型sd卡)。我需要把文件保存在微型sd卡上。
我尝试了以下几点:
FileOutputStream fos;
1) fos = new FileOutputStream(System.getenv("SECONDARY_STORAGE") + "/test.txt");
2) fos = new FileOutputStream("/storage/external_SD/test.txt");
在这两种方式中,我把微sd卡的路径放在FileOutputStream的参数上,这样它就可以在微sd卡上保存文件'test.txt‘,但是我的应用程序崩溃了,什么也没发生!
此外,我还试图创建一个文件夹,但它没有工作。
然而,当我把路径的手机的sd卡,它的工作!
还有文件夹创建工程。
但我需要在微型sd卡上写文件。
在给我答复之前请注意以下几点,
1)我在清单中设置了以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2)在尝试应用程序之前,我曾尝试将电缆与我的计算机断开。
3)尝试禁用调试模式。
4)我尝试了另一种微型sd卡。
5)我的智能手机是LG Optimus L7 (LG P714)。
6)我有安卓KitKat (4.4.2)。
7)当我在另一款智能手机(三星Galaxy S3)上试用这个应用程序时,当我将文件保存在微型sd卡上时,它仍然崩溃,但当我保存一个文件夹时,它成功了!
有人知道问题出在哪里吗?
发布于 2017-11-04 13:31:52
我的问题是,我可以写到“真正的内部存储卡”(手机的sd卡),但不能写到“真正的外部存储卡”(可移动的微型sd卡)。
自从大约四年前发布的Android4.4以来,情况就一直如此。
但我需要在微型sd卡上写文件。
您可以在getExternalFilesDirs()、getExternalCacheDirs()和getExternalMediaDirs()上使用Context。注意这些方法名称的复数形式。如果这些返回2+项,那么第二个和后续的是可移动存储的位置,是您的应用程序特有的位置,您可以从中读取和写入。
或者,使用存储访问框架并让用户选择将内容放在哪里,在那里使用带有ContentResolver和openOuptutStream()的结果Uri来写入该位置。这将允许用户使用外部存储、可移动存储以及第三方应用程序(Google、SMB/CIFS文件服务器等)支持的位置。
https://stackoverflow.com/questions/47111244
复制相似问题