Wo speichert Android die Einstellungen für "Standardanwendung für Dateityp (öffnen mit)"?

7

Wo speichert Android die Standardanwendungseinstellungen, die jeden Inhaltstyp mit einer bestimmten Anwendung verbinden? Ich meine, welche Anwendung jede Art von Datei oder Inhaltstyp öffnet. Wenn ich also zwei PDF-Reader habe und eine PDF-Datei heruntergeladen habe, verwendet Android einen davon, ohne dass der Benutzer eine Option auswählen kann.

Ich weiß, dass ich die Standardeinstellungen einer Anwendung löschen kann, aber es ist nicht das, wonach ich suche.

Ich möchte die Tabelle / Datenbank / Datei finden, die Android dafür verwendet. Befindet es sich in einer SQLite-Datenbankdatei? Wo ist es gelagert?

Erb
quelle
1
hängt von der Anwendung ab, entweder als gemeinsame Einstellungen, die XML ist oder als SQLite ... Ich denke, Sie müssen ein bisschen spezifischer sein ...
t0mm13b
4
Ich denke, was das OP bedeutet, ist: Wenn ich zB eine Bilddatei öffnen und mehrere Bildbetrachter / -editoren anhängen möchte, habe ich die Wahl, eine als "immer diese verwenden" zu markieren. Wo speichert Android diese Einstellung? Es ist nicht pro App, dies muss eine systemweite Einstellung sein.
Izzy
Hier ist eine StackOverflow-Frage, die fast dasselbe stellt, jedoch zur Verwendung im Code. stackoverflow.com/questions/8626421/…
Stephen Schrauger
Da jede App die Option hat, ihre Standardzuordnungseinstellungen zu löschen, handelt es sich vermutlich um eine Datei pro App, aber ich weiß nicht, wo sie gespeichert ist.
Francisco Alvarado
1
Das wäre die Datenbank der Launcher-Anwendung, zum Beispiel verwende ich ADW Launcher, und darin gibt es eine Tabelle namens Favoriten, die die Absichten von Apps enthält und wie man sie für unterschiedliche Apps mit ähnlicher Handhabung behandelt, zum Beispiel zwei PDF-Reader. Sie werden das nicht in Android selbst finden.
t0mm13b

Antworten:

5

Auf Jelly Bean werden die bevorzugten Aktivitäten in der XML-Datei /data/system/users/0/package-restrictions.xmlfür den primären Benutzer gespeichert . Andere Benutzer haben ihre Benutzer-ID anstelle von 0in diesem Pfad. Wenn das verschlüsselte Dateisystem aktiviert ist, beginnt es mit /data/secure/systemanstelle von /data/system.

Anders als über den PackageManagerDienst kann auf diese Datei nur über root zugegriffen werden. Sie können den Code sehen, der die Datei liest und schreibt (und somit das Format ableitet), in der Klasse com.android.server.pm.Settings.

Dan Hulme
quelle
-1

Wenn ich eine Bilddatei auf meiner SD-Karte hätte, würde ich sie über QuickPic öffnen, da dies mein Standard-Galerie-Viewer ist. Wenn ich meinen Standard-Galerie-Viewer wechseln wollte, ging ich zu Einstellungen -> Apps -> QuickPic -> "Daten löschen" und konnte dann auswählen, wie eine Bilddatei erneut geöffnet werden soll.

Daher scheint Android die Standardanwendungsdaten in den verwendeten Datendateien des Programms zu speichern.

Gaurav
quelle
Kluge Vermutung, aber Ihre Schlussfolgerung ist falsch. Wenn sich die Einstellung im Datenverzeichnis der App befindet, kann sich die App selbst zum Standard oder nicht zum Standard machen. Außerdem müsste das System das Datenverzeichnis jeder App lesen, um herauszufinden, welche App Standard ist.
Dan Hulme