2016-04-17 15 views
1

in einigen Telefonen (in einem bestimmten "oneplus" Android v6.0.1 um genau zu sein). Ich bekomme No Activity found to handle Intent { act=android.settings.ADD_ACCOUNT_SETTINGS (has extras) } Fehler, wenn ich versuche, den Konto hinzufügen Bildschirm mit, was schien der "richtige" Weg.android Hinzufügen eines Kontos mit AccountManager, Keine Aktivität zum Verarbeiten der Absicht {act = android.settings.ADD_ACCOUNT_SETTINGS (hat Extras)}

Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT); 
intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[]{Constants.ACCOUNT_TYPE}); 
startActivity(intent); 

kann ich scheinbar

<intent-filter> 
     <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" /> 
</intent-filter> 

zu Anmeldungs ​​Aktivität hinzufügen, aber sollte ich das auch tun? Wenn ja, warum funktioniert es bei den meisten Telefonen, aber stürzt bei einem ab. Ich möchte, dass meine Kontoabsicht durchgeht, als ob der Nutzer versucht, über den Einstellungsbildschirm des Telefons ein Konto zu erstellen, was wie eine schlechte Verknüpfung erscheint.

+0

Ich habe Probleme zu verstehen, also habe Geduld. Dieses Popup klingt wie zwei manifeste Filter, die einer Implicit Intent entsprechen, dh. gleiche Aktion, Kategorie ... möglich, weil zwei Versionen derselben App gleichzeitig installiert sind? zwei übereinstimmende Filter im selben Manifest usw. – Pomagranite

+0

Wie haben die Telefoneinstellungen ein Symbol für Ihren Kontotyp, wenn Sie es nicht implementiert haben? – Pomagranite

+0

Ich habe das Konto eingerichtet und es erscheint tatsächlich in den Einstellungen des Telefons, wo Sie ein neues Konto erstellen können, das ist für die meisten Telefone. aber das bestimmte Android v6 Telefon scheint aus irgendeinem Grund anders zu sein. deshalb bin ich verwirrt – Ramin

Antwort

1

Ich endlich das Problem gefunden. Offensichtlich lief das Telefon, das ich adressierte, auf einem Cyanogen und aus irgendeinem Grund, wo andere android 6 Telefone (und Emulator) GET_ACCOUNT Erlaubnis für eine Anfrage für das Konto meiner eigenen Anwendung nicht verlangten, tat dieses Telefon.

Der Fehler sagt nichts über fehlende Berechtigungen, aber nach Erwerb von GET_ACCOUNT mit Laufzeitanforderung funktioniert es wie erwartet.

0

Four things werden benötigt, um die benutzerdefinierten Konten in Android einzurichten. Implementieren Sie Abstractaccountauthenticator, um Methoden zum Hinzufügen von Konten usw. verfügbar zu machen. Erweitern Sie AccountAuthenticatorActivity um den Ansichtsteil des Geschäfts. Im Android-Manifest eine Referenz zu einer XML-Ressourcendatei, die selbst auf Symbole, String-Labels und die XML-Ressourcendatei verweist.

Jetzt vermute ich, dass Sie eine bereits vorhandene Kontoart verwenden, Google vielleicht, das auf den meisten Telefonen funktioniert. Alles android hat Google Mail oder Google Play Store. einige Google Apps. Die große Frage ist also, was ist der Wert von Constants.ACCOUNT_TYPE in Ihrem Code und möchten Sie Ihren eigenen benutzerdefinierten Account-Typ erstellen?

+0

Nein, ich verwende den Kontotyp meiner eigenen App, und ich habe diese Schritte bereits ausgeführt. Ich habe meine loginActivity AccountAuthenticatorActivity erweitern, aber keine Filter dafür in Manifest angegeben, wie ich denke, es sollte nicht direkt zu dieser Aktivität, sondern durch die Einstellung gehen – Ramin

+0

Versuchen Sie Manifest-Filter und Sie finden es in den Einstellungen – Pomagranite

+0

ich Manifest aufgeführt Filter löst diese Ausnahme wie ich gesagt habe. aber es fühlt sich einfach an wie ein Hack. auf Telefonen, die keine Ausnahme ausgelöst haben, bevor ein Auswahlfenster angezeigt wird, in dem Sie gefragt werden, ob Sie meine eigene Anmeldeaktivität oder die Kontoeinstellungen des Telefons auswählen möchten.Wenn meins gewählt wird, geht die Absicht nicht mehr über die Methode addAccount von 'AccountAuthenticator' und wird ohne Probleme geliefert. – Ramin