誰かが私のアプリケーションディレクトリのパスを取得する方法を知っていますか? (例:/data/data/my.app.lication/
)
現在、私はこのメソッドを使用しています:myActivity.getFilesDir().getParent();
が、より簡単な解決策がある場合の回避策のように思えます。また、副作用はfiles
ディレクトリの作成であり、これは不要です。
説明:最初-回答者に感謝します。別の回避策ではなく、それを行うメソッドが既に存在するかどうかを理解しようとします。
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);
}
Min API 4+でアプリケーションデータディレクトリを取得する簡単な方法があります。任意のコンテキスト(アクティビティ、アプリケーションなど)から:
getApplicationInfo().dataDir
http://developer.Android.com/reference/Android/content/Context.html#getApplicationInfo()
私はこれを得た
String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();
ここから :
コードでこれを使用してください
context.getApplicationInfo().dataDir
現在の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;
}
@ jared-burrowsのソリューションに基づいています。任意のパッケージですが、パラメータとしてコンテキストを渡します...
public static String getDataDir(Context context) throws Exception {
return context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.applicationInfo.dataDir;
}
ファイルにアクセスしようとしている場合は、 here の説明に従ってopenFileOutput()
およびopenFileInput()
メソッドを試してください。内部メモリ内の指定されたファイルへの入出力ストリームを自動的に開きます。これにより、ディレクトリとFile
オブジェクトを完全にバイパスできます。これは非常にクリーンなソリューションです。