2016-11-07 51 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吗? –

相关问题