[android] 응용 프로그램 디렉토리 가져 오기

누군가 내 응용 프로그램 디렉토리의 경로를 얻는 방법을 알고 있습니까? (예를 들어 /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);
}


답변

최소 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(Context context) throws Exception {
    return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
}

모든 패키지 :

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


답변

파일에 액세스하려는 경우 여기에 설명 된대로 openFileOutput()openFileInput()방법을 시도해보세요 . 내부 메모리의 지정된 파일에 대한 입력 / 출력 스트림을 자동으로 엽니 다. 이를 통해 디렉토리와 객체를 모두 우회 할 수 있으며 이는 매우 깨끗한 솔루션입니다.File


답변

@ jared-burrows의 솔루션을 기반으로합니다. 모든 패키지에 대해 컨텍스트를 매개 변수로 전달 중 …

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