Kann startActivity () nicht mit Chooser erstellen, der nur einmal pro App fragt

8

Wenn Sie startActivity() mit Auswahlfunktion verwenden, listet Android alle Apps auf, die berechtigt sind, Ihre Intent zu bearbeiten, sowie Optionen, um diese Zuweisung dauerhaft oder einmalig festzulegen (bei ICS die Schaltflächen "Immer" und "Nur einmal") , auf 2.x ist es Kontrollkästchen). Jedoch für diesen Code:

%Vor%

Ich sehe keine "Immer | Nur einmal" -Schaltflächen und kann meine Auswahl nicht dauerhaft machen (Ich habe nur Apps aufgelistet und kann sie durch Antippen auslösen). Was ich übersehen habe, dass Android nicht in der Lage war, die Benutzerauswahl persistent zu machen?

Siehe die Bilder: linker Dialog ist das, was ich sehen möchte, aber richtig ist, was ich jetzt bekomme (unterschiedliche Anzahl von Anwendungen in beiden Dialogen ist irrelevant):

    
Marcin Orlowski 08.10.2012, 11:28
quelle

1 Antwort

16

Für einen Rekord - es war ein Überinterpretationsfehler (von mir). Die Auswahl, die ich verwendete, ist genau das, was auf dem Bild auf der rechten Seite zu sehen ist. Und es zeigte sich die ganze Zeit, weil ... Ich habe es die ganze Zeit angerufen. Ich habe fälschlicherweise angenommen, dass der Wähler die Funktion "Immer | Nur einmal" anbietet und nicht angezeigt wird, wenn der Benutzer auf "Immer" tippt (und erscheint, wenn er "Nur einmal" verwendet). Aber es ist falsch. Die Auswahl wird immer angezeigt, da dies ihre Rolle ist - damit der Benutzer auswählen kann. Die Funktion "Immer | Nur einmal" ist etwas anderes - sie ist eine Funktion des Android-Frameworks für Aufrufe von startActivity() und startActivityForResult() und wird bei Bedarf automatisch angezeigt - wenn es mehr als eine App (oder genau mehrere) gibt Übereinstimmung intent-filter ), die bestimmte Absicht behandeln kann. Es wird nicht angezeigt, wenn Sie nur einen haben (oder der Benutzer hat zuvor auf "Immer" geklickt). Sie als Entwickler müssen sich nicht darum kümmern.

Um das zu beheben, habe ich einfach meinen viewInExternalApplication() -Code geändert, damit er nur startActivity() aufruft:

%Vor%

und lass den Rahmen den Rest erledigen.

    
Marcin Orlowski 08.10.2012, 11:52
quelle

Tags und Links