web-dev-qa-db-ja.com

Androidアプリケーションの「ホーム」データディレクトリを取得

アプリが内部メモリに書き込むときのデフォルトの「ホーム」ディレクトリに関する簡単な質問。デフォルトでは、作成されたファイルはすべてOS(2.2)によって次の場所に配置されます。

_/data/data/your.package/files
_

ファイルを読み込むとき、openFileInput()openFileOutput()を介して適切なコンテキストを維持するとき、同じデフォルトが使用されます。ただし、たとえばFileクラスを使用してファイルの存在を確認する必要がある場合は、コンストラクターでパス全体を指定する必要があります。

Environment.getDataDirectory()(_/data_を返す)、Environment.getRootDirectory()(_/system_を返す)などがありますが、アプリの「ホーム」ディレクトリの取得に関連するものはありません。

それは大したことではありませんが、参照する方法がある場合は、使用するApp for Fileにフルパスをハードコーディングしないでください(パッケージ名の変更、将来のOSリリースでのパスの変更など)プログラムでアプリの「ホーム」ディレクトリ。

49
Paul Mennega

もちろん、失敗することはありません。上記の質問を投稿してから約1分後に解決策を見つけました...同じ問題が発生した可能性のある人のための解決策:

ContextWrapper.getFilesDir()

見つかった ここ

93
Paul Mennega

パッケージの永続データフォルダーが必要な場合は、Context.getApplicationInfo().dataDirを試すことができます。

getFilesDir()は、このサブルートを返します。

35
Learn OpenGL ES

アプリケーションパッケージ内のファイルのパスを取得するには、

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
14
Ali Imran