Ich schreibe eine Android App, die viele Mediendateien speichert. Sie sind nicht der Typ (und sind viel zu viele), um die Benutzerbenachrichtigung oder andere Medienverzeichnisse zu überladen, aber sie müssen auch vom Benutzer aktualisierbar sein, so dass ich sie nicht in die Ressourcen einfügen kann. Ich kann getExternalFilesDir verwenden, um einen Pfad auf der SD-Karte zu bekommen, aber ich möchte das nur tun, wenn die App selbst auf der SD-Karte installiert ist. Wenn die App intern installiert ist, möchte ich das Medium in den internen Speicher legen.
Wie kann ich feststellen, ob meine App im internen oder externen Speicher ausgeführt wird?
Sie können den PackageManager verwenden, um die ApplicationInfo abzurufen, und von dort aus die "Flags" für FLAG_EXTERNAL_STORAGE .
Hier ist ein kurzes Beispiel, das ich demonstrieren konnte:
%Vor%Abhängig von Ihrer Situation (unabhängig davon, ob Sie alle "Medien" im Vordergrund haben oder der Benutzer sie bei der Verwendung der App erhält / erstellt), möchten Sie sie dennoch auf den externen Speicher legen. Eine große interne App ist von vielen Nutzern verpönt (und viele interne Medien würden es wahrscheinlich riesig machen).
Um zu prüfen, ob die Anwendung auf der SD-Karte installiert ist oder nicht, tun Sie Folgendes:
%Vor%Tags und Links android android-emulator android-sdcard android-2.2-froyo