Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Android NDK将文件写入SD卡以外的位置?_Android_Android Ndk_Java Native Interface_Storage - Fatal编程技术网

使用Android NDK将文件写入SD卡以外的位置?

使用Android NDK将文件写入SD卡以外的位置?,android,android-ndk,java-native-interface,storage,Android,Android Ndk,Java Native Interface,Storage,除了在SD卡上写文件,还有其他方法吗 我在文件系统上尝试了许多不同的路径,但是fopen总是返回NULL,除了我在/sdcard/中写入/读取的任何文件 是否还有其他等同于: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 允许您在文件系统或其他地方进行写操作?您可以从应用程序中访问两个位置:SD卡和应用程序的特殊数据目录。任何其他地方都是禁止进入的,除非你有根访问权限 您始

除了在SD卡上写文件,还有其他方法吗

我在文件系统上尝试了许多不同的路径,但是fopen总是返回NULL,除了我在/sdcard/中写入/读取的任何文件

是否还有其他等同于:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


允许您在文件系统或其他地方进行写操作?

您可以从应用程序中访问两个位置:SD卡和应用程序的特殊数据目录。任何其他地方都是禁止进入的,除非你有根访问权限

  • 您始终可以访问该目录 您的应用程序所在的位置

    此目录通常是:

    data/data//files/

    但是最好使用
    getFilesDir()
    来 确保将来的文件路径有效 android的版本变更

  • 如果你想使用外部存储 取而代之的是,一定要把这个 应用程序清单中的代码行 获得许可

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    编辑:

    在第一次使用C之前,您可能需要手动创建/文件:

    int result\u code=mkdir(“/data/data/com.app/files/”,0770)


    干杯

    “特殊数据目录”的位置在哪里?因为我认为不是所有的手机都有SD卡。。。因此,使用/sdcard/dir。这是不可靠的。您可以使用以下命令询问操作系统目录在Java中的位置:mContext.getFilesDir();mContext.getExternalFilesDir(null);由于设备的内部存储可能有限,您应该选择外部存储来存储大型对象。我有根用户访问该设备的权限。你能解释一下我如何访问文件系统吗。尝试在系统中打开文件对我不起作用。请检查此链接中回答的问题:上一个代码示例中包含哪些标志
    0770
    <代码>mkdir(“/data/data/com.app/databases”,S|IRWXU | S|IRWXG | S|u IWOTH | S|IXOTH)对我不起作用:(
    //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);
    }