今回はAndroidネイティブアプリからSDカードへファイルを読み書きしてみる。
前回紹介したEasyProjectGenerator for Android Ver 1.00を利用してAndroidプロジェクトを生成、Eclipseに取り込む。

#include <string.h> #include <jni.h> #include <stdio.h> jstring Java_com_Test104_Test104Act_stringFromJNI(JNIEnv* env,jobject thiz) { char* pszRet; char pszBuff[256]; FILE *fp; /* file WRITE */ fp = fopen("/sdcard/test.txt","w"); if(fp) { fputs("Test line.",fp); fclose(fp); } pszBuff[0] = NULL; pszRet = NULL; /* file READ */ fp = fopen("/sdcard/test.txt","r"); if(fp) { pszRet = fgets(pszBuff,256,fp); fclose(fp); } if(pszRet) return (*env)->NewStringUTF(env, pszBuff); else return (*env)->NewStringUTF(env, "Error."); }
そしてプロジェクトフォルダ内にあるバッチファイルを利用してネイティブコードをビルドする。
ネイティブのビルドが終わったら、Eclipse上から実行する。
これでAndroidエミュレーター上でエラーが表示されず、実行が確認できた。

本来であればAndroidManifest.xmlにandroid. permission. WRITE_EXTERNAL_STORAGEを設定する必要があると思うのだがなくても動作するようだ。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>