簡體   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