繁体   English   中英

无法访问辅助存储(外部可移动微型 SD 卡)

[英]Can't access the secondary storage (the external removable micro sd card)

在阅读真正的问题之前,请先阅读我的问题介绍:

在 Android 中有一个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卡​​)而不是真正的外部存储卡(可移动micro sd卡)的路径。

我的问题是我可以写入“真正的内部存储卡”(手机的 SD 卡),但不能写入“真正的外部存储卡”(可移动的微型 SD 卡)。 我需要将文件保存在 micro SD 卡上。

我尝试了以下几件事:
FileOutputStream fos;
1) fos = new FileOutputStream(System.getenv("SECONDARY_STORAGE") + "/test.txt");
2) fos = new FileOutputStream("/storage/external_SD/test.txt");

在这两种方式中,我都将 micro sd 卡的路径放在FileOutputStream的参数中,这样它就会将文件“test.txt”保存在 micro sd 卡上,但我的应用程序崩溃了,没有任何反应!
另外,我也尝试过创建一个文件夹,但是没有用。

然而,当我把手机的sd卡​​的路径,它的工作原理!
并且文件夹创建也有效。

但是我需要在micro 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) 我有 Android KitKat (4.4.2)。
7) 当我在另一部智能手机(三星 Galaxy S3)上试用该应用程序时,当我将文件保存在 micro sd 卡上时,它仍然崩溃,但是当我保存一个文件夹时,它成功了!

有谁知道是什么问题?

我的问题是我可以写入“真正的内部存储卡”(手机的 SD 卡)但不能写入“真正的外部存储卡”(可移动的微型 SD 卡)

自大约四年前发布的 Android 4.4 以来,情况一直如此。

但是我需要在micro sd卡上写文件。

您可以在Context上使用getExternalFilesDirs()getExternalCacheDirs()getExternalMediaDirs() 请注意这些方法名称的复数形式。 如果这些返回 2+ 项,则第二个和后续项是可移动存储上的位置,对于您的应用程序而言是唯一的,您可以从中读取和写入。

或者,使用存储访问框架并让用户选择放置内容的位置,您将生成的UriContentResolveropenOuptutStream()用于写入该位置。 这将允许用户使用外部存储、可移动存储以及第三方应用程序(Google Drive、SMB/CIFS 文件服务器等)支持的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM