web-dev-qa-db-ja.com

アプリケーションディレクトリを取得する

誰かが私のアプリケーションディレクトリのパスを取得する方法を知っていますか? (例:/data/data/my.app.lication/

現在、私はこのメソッドを使用しています:myActivity.getFilesDir().getParent();が、より簡単な解決策がある場合の回避策のように思えます。また、副作用はfilesディレクトリの作成であり、これは不要です。

説明:最初-回答者に感謝します。別の回避策ではなく、それを行うメソッドが既に存在するかどうかを理解しようとします。

72
MByD
PackageManager m = getPackageManager();
String s = getPackageName();
PackageInfo p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;

EclipseがキャッチされていないNameNotFoundExceptionを心配している場合、以下を使用できます。

PackageManager m = getPackageManager();
String s = getPackageName();
try {
    PackageInfo p = m.getPackageInfo(s, 0);
    s = p.applicationInfo.dataDir;
} catch (PackageManager.NameNotFoundException e) {
    Log.w("yourtag", "Error Package name not found ", e);
}
83
Philip Sheard

Min API 4+でアプリケーションデータディレクトリを取得する簡単な方法があります。任意のコンテキスト(アクティビティ、アプリケーションなど)から:

getApplicationInfo().dataDir

http://developer.Android.com/reference/Android/content/Context.html#getApplicationInfo()

92
James Wald

私はこれを得た

String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();

ここから

21
davibq

コードでこれを使用してください

 context.getApplicationInfo().dataDir
17
RATHI

現在のAndroidアプリケーションパッケージの場合:

public String getDataDir(final Context context) throws Exception {
    return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
}

パッケージの場合:

public String getAnyDataDir(final Context context, final String packageName) throws Exception {
    return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir;
}
9
Jared Burrows

@ jared-burrowsのソリューションに基づいています。任意のパッケージですが、パラメータとしてコンテキストを渡します...

public static String getDataDir(Context context) throws Exception {
    return context.getPackageManager()
            .getPackageInfo(context.getPackageName(), 0)
            .applicationInfo.dataDir;
}
3

ファイルにアクセスしようとしている場合は、 here の説明に従ってopenFileOutput()およびopenFileInput()メソッドを試してください。内部メモリ内の指定されたファイルへの入出力ストリームを自動的に開きます。これにより、ディレクトリとFileオブジェクトを完全にバイパスできます。これは非常にクリーンなソリューションです。

3
Chris Thompson