Weiß jemand, wie ich den Pfad meines Anwendungsverzeichnisses erhalte? (zB /data/data/my.app.lication/
)
Momentan verwende ich diese Methode: myActivity.getFilesDir().getParent();
aber es scheint mir eine Problemumgehung zu sein, wenn es eine einfachere Lösung gibt. Der Nebeneffekt ist auch die Erstellung des files
Verzeichnisses, das nicht benötigt wird.
Klarstellung: Zuerst - Danke für die Antworten. Ich versuche zu verstehen, ob es bereits eine Methode gibt, die dies tut, und nicht für eine andere Problemumgehung.
getDatabasePath()
. Oder verwenden Sie, wenn Sie Ihr eigenes Verzeichnis unabhängig von anderen Elementen möchtengetDir()
.;)
Antworten:
PackageManager m = getPackageManager(); String s = getPackageName(); PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir;
Wenn sich Eclipse Sorgen um einen Ungefangenen macht
NameNotFoundException
, können Sie Folgendes verwenden: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); }
quelle
sourceDir
ist eine unglückliche Fehlbenennung.dataDir
sollte das sein, wonach du suchst.Es gibt eine einfachere Möglichkeit, das Anwendungsdatenverzeichnis mit min API 4+ abzurufen. Aus jedem Kontext (z. B. Aktivität, Anwendung):
getApplicationInfo().dataDir
http://developer.android.com/reference/android/content/Context.html#getApplicationInfo ()
quelle
Ich schaff das
String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();
von hier :
quelle
Verwenden Sie dies einfach in Ihrem Code
context.getApplicationInfo().dataDir
quelle
android.os.Environment.getDataDirectory().getAbsolutePath()
?Für das aktuelle Android-Anwendungspaket:
public String getDataDir(Context context) throws Exception { return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir; }
Für jedes Paket:
public String getAnyDataDir(Context context, String packageName) throws Exception { return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir; }
quelle
Wenn Sie versuchen , Zugriff auf eine Datei zu erhalten, versuchen die
openFileOutput()
undopenFileInput()
Verfahren , wie sie hier . Sie öffnen automatisch Eingabe- / Ausgabestreams für die angegebene Datei im internen Speicher. Auf diese Weise können Sie das Verzeichnis und dieFile
Objekte insgesamt umgehen, was eine ziemlich saubere Lösung ist.quelle
Basierend auf der Lösung von @ jared-burrows. Für jedes Paket, aber Übergabe von Context als Parameter ...
public static String getDataDir(Context context) throws Exception { return context.getPackageManager() .getPackageInfo(context.getPackageName(), 0) .applicationInfo.dataDir; }
quelle