生也有涯,知也无涯。这篇文章主要讲述使用Android NDK将文件写入SDcard以外的位置?相关的知识,希望能为你提供帮助。
除了在SD卡上,还有其他方法可以在其他地方写入文件吗?
我在文件系统上尝试了很多不同的路径但是fopen总是返回NULL,除了我在/ sdcard /中写入/读取的任何文件...
还有别的东西相当于:
<
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
那允许你在文件系统上写一些东西?
答案
- 您始终可以访问放置应用程序的目录。
这个目录通常是:
data/data/< Your_package_name_usually com.android.appName> /files/< your_filename>
但最好使用getFilesDir()
来确保有效的文件路径以及android的未来版本更改。 - 如果您想使用外部存储,请确保将此行代码放在应用清单中以获得许可。
< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
然后使用sdcard目录:getExternalStorageDirectory(); //usually : /sdcard/< your_filename>
- 否则,您可以root设备并获得对整个文件系统的访问权限。但在使用您的应用程序之前,您必须要求所有应用用户在其设备上获得root访问权限。有些游戏使用这种做法,但我不推荐它。如果你还想这样做,请查找适用于android的
Superuser
应用程序,它是免费且值得信赖的。
//Inside your java activity
File f = this.getApplicationContext().getFilesDir();
LibLoader.setupArchiveDir(f.toString());
//Inside your JNI wrapper
JNIEXPORT bool JNICALL Java_com_android_appName_LibLoader_setupArchiveDir(JNIEnv * env, jobject obj, jstring dir)
{
const char* temp = env->
GetStringUTFChars(dir, NULL);
std::string stringDir(temp);
// Will be receive as a std::string inside C++ code
MyNativeObjectInC++->
SetupArchiveDir(stringDir);
}
编辑:
您可能需要在第一次使用它之前在C中手动创建/ files:
int result_code = mkdir("/data/data/com.app/files/", 0770)
干杯!
另一答案【使用Android NDK将文件写入SDcard以外的位置()】您可以从应用程序,SDCard和应用程序的特殊数据目录访问两个位置。除非您具有root权限,否则任何其他地方都是禁止的。
推荐阅读
- 如何加载android系统本机库
- Xamarin.Android Java绑定库运行时失败访问本机库
- 如何在tid xxxxx(Thread-X)中解决Android致命信号11(SIGSEGV),代码1,故障地址0x0()
- 如何在Android应用程序中使用Geocoder在特定位置找到大陆
- 从AppWidgetProvider到Broadcastreceiver的意图
- 如何让Android搜索栏顺利移动()
- Android中的包含布局已拉长
- 最好的开源渗透和安全测试(黑客)Linux操作系统
- 5个最佳高级足球俱乐部网站模板