2016-11-07 55 views
0

我的問題應該有點簡單,但我從互聯網上搜索了很多,找不到答案。使用NDK API在Android中進行可移動存儲訪問

我可以用下面的代碼

String ExternalSdcardPath = System.getenv("SECONDARY_STORAGE") + "/Sample/"; 

得到二級移動存儲(SD卡)的路徑和我能得到這樣的,/存儲/ external_SD /樣品/

路徑和我試圖創建與NDK API(的fopen(ExternalSdcardPath, 「A +」);)文件

,但我不能創建和讀取的fopen文件..

可以請你告訴我如何到c在可移動路徑(secondary_storage)中使用fopen API讀取和讀取文件?

回答

2

我可以用下面的代碼

存在對環境變量存在,更不用說點有意義的事沒有要求獲得二次移動存儲(SD卡)的路徑。

我不能創建和讀取的fopen

文件你沒有在Android上直接訪問文件系統到任意位置移動存儲4.4+。

你能告訴我如何在可移動路徑(secondary_storage)中用fopen api創建和讀取文件嗎?

你的唯一的地方直接訪問文件系統到可移動存儲是由getExternalFilesDirs()getExternalCacheDirs()getExternalMediaDirs()返回的位置。這些都是Context上的所有方法(例如,活動或服務)。如果它們返回2+值,則第二個和後續的值位於可移動存儲上。您的Java代碼可以爲您的NDK代碼提供這些路徑。

+0

謝謝你的回答!我測試了你所說的並且可以獲得可移動路徑(File [] files = getExternalFilesDirs(「」);以及string path = files [1] .getAbsolutePath(),sdcard/Android/data/my package文件夾)存儲pacakge文件夾與我的NDK代碼。 我應該訪問並寫入和讀取其他路徑的權限,sdcard/test_folder(不是包文件夾)? –

+0

@ Ji.Hoon.Kim:正如我在我的回答中所寫的,在Android 4.4+上,您沒有直接文件系統訪問可移動存儲上的任意位置(例如,無論sdcard/test_folder是什麼)。 – CommonsWare

+0

我可以通過SAF(DocumentFile API,Android 5.0.1+,Lollipop)直接訪問可移動存儲上任意位置的文件系統。我可以在沒有SAF Google UI的Android 5.0.1+上使用SAF嗎? –

相關問題