2011-01-12 6 views
2

Gibt es eine Möglichkeit zu erkennen, dass ein Telefon eine Standardanwendung für eine Absicht wie android.intent.action.SEND ausgewählt hat?Android Intent Standardeinstellungen - Erkennen und Löschen

Gibt es eine Möglichkeit, die Standardanwendung über Code zu löschen?

Ich möchte dem Benutzer eine Option geben, um den Standard zu entfernen oder zumindest einen Bildschirm anzeigen zu lassen, wie es manuell gemacht wird, wenn ich es erkennen kann.

Antwort

5

Werfen Sie einen Blick auf PackageManager. Damit können Sie festlegen, wie eine Absicht mit resolveActivity (intent) gehandhabt wird. Es sieht so aus, als ob die Methode zum Löschen der Präferenz (clearPackagePreferredActivities) nur auf Ihrem eigenen Paket funktioniert.

+0

Es sieht so aus, als ob Sie auf dem richtigen Weg sind, aber da ist eine Menge. Ich muss das nachforschen, wenn ich nach Hause komme. Vielen Dank. – user432209

+0

Nun, ich konnte mit dieser Methode ein Fehlen einer Standardaktivität feststellen. Im Grunde habe ich "com.android.internal.app.ResolverActivity", wenn kein Standard ausgewählt wurde. So funktionierte es, aber ich musste den Vergleich per String machen, was ich mir nicht sicher bin, ist eine vielversprechende Methode, da sich der Name der Aktivität ändern könnte. Vielen Dank! – user432209

+0

@ user432209, ich denke, Sie können 'resolveActivity (intent, MATCH_DEFAULT_ONLY)' verwenden, um den String-Vergleich zu vermeiden. – beetstra

3

Verwenden Sie 2-Schritt Erkennung von Ausfällen:

PackageManager.queryIntentActivities alle Aktivitäten für Intent zu bekommen, PackageManager.resolveActivity zu gelöst zu bekommen.

Wenn der aufgelöste Wert in der von queryIntentActivities zurückgegebenen Liste enthalten ist, wird kein Dialogfeld "Aktion abschließen mit" angezeigt, daher wurde die Aktivität "Standard" festgelegt.