apk がインストールされた、アプリ固有のパスは、アクティビティの internalDataPath に格納されています。 これを使って作成したファイルは、接続したPC等からは見えませんが、アプリのデータを保存するのに適していると思われます。 このあたりを検証しています。
ご利用に際しては、必ずプライバシーポリシー(免責事項等)をご参照ください。
また、本サイトが初めての方は、まずこのページの注意事項をご覧ください。
投稿 December 20, 2017, 最終更新 July 19, 2018(様式変更)
最初の目的は、
結果的に、プライベートな領域に作成したファイルは外部から参照できないようで、ログには使いませんでしたが、 連続プレー日数や獲得ポイントなど、Windows で言う ini や レジストリのような使い方には適していますので、 その目的では使用できます。
Windows では、どこでも比較的自由にフォルダやファイルを作成できますが、Android は基本的に完結している必要があるので、 自由にはファイルを作れません。自由にファイルを作成できるのは、アプリのインストールパスにある、files フォルダのみのようです。
アプリのパス自体は、ルールとしては決まると思いますが、
struct android_app* app にある、const char* の app->activity->internalDataPath を使えば、
/data/data/アプリケーション名/files
を得られます。
あとは、ファイル名をフルパスで作成して、 FILE* fp = fopen(ファイル名,"rb") としてファイルを開き、fread 関数で読めば、読み込みできます。 もちろん、fopen の第2引数で指定すれば、書き込みもできます。
現時点では、ini 形式のテキストの読み書きができるクラスを作成してアクセスするようにし、 アプリの機能(デバッグ機能?)として、それをパブリックな領域(具体的には Download フォルダ)に コピーできるようにして、確認を行っています。
なお、パブリックな領域にアクセスするには、Android Manifest に以下の記述が必要となるようでした。
Download フォルダなど、アプリケーション専用のフォルダ以外にアクセスしたい場合、 AndroidManifest.xml の </manifest> の前に、以下の行を書き込みます(READ_ のほうは、読み込みもしたいとき必要)。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Download などのフォルダへのパス取得は、Java のクラスを利用しないといけないようですから、 今ここにある情報だけではコピーはできません。
投稿 January 31, 2018
Download などのフォルダへのアクセスについては、 「JNI によるパブリックなパスの取得」で検討しています。
おすすめ記事はありません。