完全に可能ですが、Java コードがなければできません。
EDIT : 以下は、データベースの代替として提供されます。ネイティブ コードから永続的なデータをファイルに読み書きできると、データベースよりもはるかに柔軟になります...
ファイルシステムに存在するファイル (バイナリまたはプレーンテキスト) からデータを保存および取得する場合、次の手順を実行します。
JAVA : アプリの保存場所を取得し、読み取りと書き込みが可能かどうかを確認します
JAVA : 上記が正の場合、JNI を介してネイティブ層に渡します
NATIVE : ストレージ パラメータを使用してファイルの読み取り/書き込みを行います
わかりました、ここまでは要約です。コードに行きましょう:
1A) ストレージの取得とチェック:
private boolean checkExternalStorageState(){
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
android.util.Log.i("YourActivity", "External storage is available for read/write...", null);
return true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media : NOT ok
android.util.Log.e("YourActivity", "External storage is read only...", null);
return false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
android.util.Log.e("YourActivity", "External storage is not mounted or read only...", null);
return false;
}
}
保管場所を取得します。
private get storageLocation(){
File externalAppDir = getExternalFilesDir(null);
String storagePath = externalAppDir.getAbsolutePath()
}
1B) ファイルが存在するかどうかを確認することもできます (これはネイティブ部分でも実行できます)。
private boolean fileExists(String file) {
String filePath = storagePath + "/" + file;
// see if our file exists
File dataFile = new File(filePath);
if(dataFile.exists() && dataFile.isFile())
{
// file exists
return true;
}
else
{
// file does not exist
return false;
}
}
2) ネイティブ レイヤーに渡します。
Java 部分:
// Wrapper for native library
public class YourNativeLib {
static {
// load required libs here
System.loadLibrary("yournativelib");
}
public static native long initGlobalStorage(String storagePath);
...enter more functions here
}
ネイティブ部分:
JNIEXPORT jlong JNICALL Java_com_whatever_YourNativeLib_initGlobalStorage(JNIEnv *env, jobject obj, jstring storagePath)
{
jlong data = 0;
// convert strings
const char *myStoragePath = env->GetStringUTFChars(storagepath, 0);
// and now you can use "myStoragePath" to read/write files in c/c++
//release strings
env->ReleaseStringUTFChars(storagePath, myStoragePath);
return data;
}
c/c++ でバイナリ ファイルまたはテキスト ファイルを読み書きする方法は十分に文書化されています。それはあなたに任せます。