このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。
Hi, Developers,
straightapps.com
作成日 December 22, 2017、最終更新日 July 19, 2018(様式変更)
トップページ > Android 開発トップ > アプリ固有のファイルへのアクセス
line
Android 開発
line

ここでは、アプリ固有のファイルへのアクセスを検討しています。

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 によるパブリックなパスの取得」で検討しています。

line
関連トピックス
line

JNI でウェブサイトを開く

JNI で、標準のブラウザで(あるいは1つを選択してもらって)ウェブサイトを開く方法について、記載しています。

JNI によるパブリックなパスの取得

JNI による、Download 等のパブリックなパスの取得方法を記載しています。

line
その他のおすすめ
line

おすすめ記事はありません。

JavaScriptが無効です


© 2017-2019 StraightApps.com 無断転載を禁じます。No reproduction without permission.