2013-10-24 11 views
24

Ich habe einen Sync-Adapter mit einem Dummy-Konto erstellt und ich möchte nicht, dass es in der Konto-Liste in den Einstellungen angezeigt wird, noch wenn ein Benutzer die Schaltfläche Konto hinzufügen in den Einstellungen drückt . Ich habe versucht Android: userVisible = "false" in meiner Sync-Adapter-Definition, aber immer noch das Konto erscheint. Ich habe das auf einem Emulator und 3 physischen Geräten versucht. Alles funktioniert korrekt in dem Sinne, dass es alle Daten synchronisiert, die ich brauche, das einzige was falsch ist, ist, dass ich das Konto auf der Liste sehe, und ich will es nicht.Dummy-Konto für Sync-Adapter aus Einstellungen ausblenden

Mein authenticator.xml ist:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
        android:accountType="net.astagor.android.hhp.account" 
        android:icon="@drawable/ic_launcher" 
        android:smallIcon="@drawable/ic_launcher" 
        android:label="@string/app_name" 
    /> 

Mein syncadapter.xml ist:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
      android:contentAuthority="net.astagor.android.hhp" 
      android:accountType="net.astagor.android.hhp.account" 
      android:userVisible="false" 
      android:supportsUploading="true" 
      android:allowParallelSyncs="false" 
      android:isAlwaysSyncable="true" 
    /> 

Und ich schließe mich adpater wie folgt aus:

Account account = AuthenticatorService.GetAccount(); 

AccountManager accountManager = (AccountManager) context 
    .getSystemService(Context.ACCOUNT_SERVICE); 

if (accountManager.addAccountExplicitly(account, null, null)) { 

ContentResolver.setIsSyncable(account, StubProvider.AUTHORITY, 1); 

ContentResolver.setSyncAutomatically(account, 
     StubProvider.AUTHORITY, true); 

ContentResolver.addPeriodicSync(account, StubProvider.AUTHORITY, 
     new Bundle(), SYNC_FREQUENCY); 
} 

Und das ich das bekommen Konto in der Account-Liste und in der Add-Account-Liste.

Hilfe bitte! :)

+0

Ich bin sehr interessiert an der Antwort auf diese Frage (wenn es einen besseren Weg gibt) –

+0

Das gleiche Problem hier. Nimm alles von den Dokumenten, genau wie du - will nicht, dass ein Dummy-Konto sichtbar ist, aber es zeigt einfach immer! :-(Was ist hier kaputt? – Zordid

Antwort

3

Dies ist keine echte Antwort, aber wenn Sie das Label aus der authenticator.xml entfernen, wird es nicht in der Liste der hinzugefügten Konten angezeigt, aber das Symbol ist dort ohne Bezeichnung in der Liste nach dem Klicken Konto hinzufügen. Hässlich und wahrscheinlich keine gute Idee. (Diese Methode versteckt Konto mindestens auf meinem Nexus 4 mit 4.4 - habe noch keine anderen Geräte überprüft).

Ich glaube, der Benutzer sichtbar Flagge in Sync-Adapter wirkt sich nur auf die Anzeige des Sync-Teil nach der Auswahl eines Kontos, wo Sie die letzte Synchronisierungszeit sehen, automatische Synchronisierung Einstellungen festlegen und Synchronisierung auslösen.

Ich würde gerne auch das wissen. Es muss möglich sein, da ich meine Kontenliste nicht mit Dummy-Konten gefüllt sehe. Entweder gibt es einen Weg oder fast keine meiner installierten Apps stört sich mit Sync-Adaptern?

4

Ich fand die Lösung. Diese ist wie authenticator.xml aussehen sollte:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" 
        android:accountType="net.astagor.android.hhp.account" 

    /> 

Sie müssen nicht diese Zeilen haben:

   android:icon="@drawable/ic_launcher" 
       android:smallIcon="@drawable/ic_launcher" 
       android:label="@string/app_name" 

Wenn Sie sie setzen, wird das Konto sichtbar sein, wo immer Sie android gesetzt: userVisible =“ falsch "oder nicht.

+4

Sie erhalten immer noch eine leere Zeile in der verfügbaren Kontenliste, wenn Sie zu Einstellungen> Konto hinzufügen gehen, gibt es jetzt eine leere Zeile an der Spitze für mich. Sie erhalten auch Warnungen gedruckt das Protokoll durch die Einstellungen App, mit Ihrem Paketnamen. nicht ideal auch: 2671-2671 /? W/ChooseAccountActivity: Keine Label-Ressource für Account-Typ my.package.name.account 2671-2671 /? W/ChooseAccountActivity: Keine Symbolressource für den Kontotyp my.package.name.account 2671-2671 /? W/AuthenticatorHelper: Kein Beschriftungssymbol für den Kontotyp my.package.name.account – Jason

+0

Wahr, in der Liste Konto hinzufügen ist eine leere Position vorhanden. Also, wie verwenden Leute Pseudokonten oder verwenden sie überhaupt keine Synchronisationsadapter? – Astagor