Angenommen, ich habe eine Browser-App,
Und ich möchte, dass eine Einstellung als "Standardbrowser" aufgerufen wird, um die Dialogauswahl anzuzeigen, obwohl der aktuelle Standardbrowser nicht meine App ist.
Wie kann ich den App-Auswahldialog programmgesteuert anzeigen lassen?
Danke.
Update Nach der Antwort von Michals Antwort schrieb ich folgendes:
%Vor%Während der Auswahldialog angezeigt wird, wird die Option "Immer" und "Nur einmal" nicht angezeigt. Wie kann ich diese Option anzeigen lassen?
Danke!
Es gibt einen schmutzigen raffinierten Hack, der dir erlaubt, das zu tun. Die Inspiration für diesen Hack könnte hier
gefunden werdenbedeutet, dass android denkt, dass ein neuer Browser installiert wurde, der eine gefälschte Komponente mit einem typischen Browser Intent-Filter füttert. Ich werde einen kleinen Testfall als Proof-of-Concept bereitstellen, und es liegt an Ihnen zu entscheiden, wie Sie ihn in Ihrer realen Anwendung verwenden könnten.
scheint allgemein und in vielen Fällen anwendbar zu sein (nicht nur für Launcher und Browser) und hängt nur vom Intent-Filter ab, der einem Resolver zugeführt wird.
Nehmen wir an, dass wir eine Standardaktivität zum Durchsuchen des einfachen Links Ссылка überschreiben möchten Wir werden neben den echten in AndroidManifest.xml eine falsche Browseraktivität deklarieren:
%Vor%FakeActivity ist absolut leer:
%Vor%Wir zeigen die App-Auswahl durch Drücken einer einfachen Schaltfläche in activity_main.xml an und testen das Standardverhalten durch Drücken einer anderen Taste:
%Vor% Jedes Mal, wenn Sie auf changeDefaultButton
klicken, wird der Auswahldialog angezeigt (vorausgesetzt, es sind mindestens zwei geeignete Browser-Apps installiert). Außerdem ermöglicht der Auswahldialog dem Benutzer immer, die ausgewählte Anwendung als Standard festzulegen .
GitHub-Proof-of-Concept-Projekt
Hoffe, das hilft.
Sie können Intent mit ACTION_CHOOSER
erstellen, das mit Intent.createChooser()
erhalten wird. In der Methode params werden die Anfangsabsicht und der Titel übergeben. Sie können diesem Chooser mehr Absicht hinzufügen, indem Sie extra Intent.EXTRA_INITIAL_INTENTS
mit einem Array von Absichten einfügen.
Tags und Links android