2014-01-19 8 views
10

Ich möchte auf getFilesDir() zugreifen, die eine Kontextmethode ist.Wie kann man auf getFilesDir() als Umgebungsvariable zugreifen?

Gibt es eine Möglichkeit, auf sie zuzugreifen, ähnlich wie ich auf externen Speicher zugreife?

Environment.getExternalStorageDirectory();

Bedeutung als Umgebungsvariable?

Vielleicht Anwendung statischer Kontext? Ich möchte dies von einer Nicht-Kontext-Klasse aus aufrufen (derselbe App-Service, aber keine Aktivität).

+1

Service ist auch ein Kontext als Dienst-Kontext erstreckt. So können Sie 'getFilesDir() 'in Service rufen ... –

+0

gibt es eine Möglichkeit, dies ohne Kontext und ohne Kontext zu erhalten? –

Antwort

11

Es ist nicht möglich.

Context.getFilesDir() gibt einen Pfad zurück, der an Ihr Paket gebunden ist, und Context ist erforderlich, um auf den Paketnamen zuzugreifen.

Environment ist anders, da es nur Konstanten gibt, die für alle Apps gelten, die auf der gleichen Laufzeit ausgeführt werden.

Allerdings ist ein Context praktisch überall in einer Android-Anwendung verfügbar, so dass dies kein Problem sein sollte.


Follow up:

wie etwa Environment.getDataDirectory()? Wie kann ich data\data ab data\data\com.Myapp mit EnvironmentVar bekommen?

Environment.getDataDirectory() gibt nur den Teil des Datenverzeichnisses zurück, der allen Apps gemeinsam ist. Zum Beispiel die /data/data.

Um Ihre eigenen Dateien Verzeichnis (getFilesDir()) zu bekommen, müssen Ihr Paketname und "/files" daran angehängt werden. Context Implementierung tut dies für Sie.

+1

Wie kann ich 'data \ data' aus' data \ data \ com.Myapp' mit EnvironmentVar bekommen? –

2

Es gibt eine ausgezeichnete Dokumentation dazu, die von einem Githib-Benutzer gemacht wurde, was sehr wertvoll ist. Vielleicht wird es jemand helfen:

https://gist.github.com/granoeste/5574148

Hier ist der gesamte Inhalt aus der Dokumentation geschrieben:

enter image description here

enter image description here

Verwandte Themen