2013-10-24 13 views
24

Ho creato un adattatore di sincronizzazione con un account fittizio e non desidero che venga visualizzato nell'elenco Account nell'applicazione Impostazioni, né quando un utente preme il pulsante Aggiungi account in Impostazioni . Ho provato Android: userVisible = "false" nella mia definizione di sync-adapter, ma appare ancora l'account. Ho provato questo su un emulatore e 3 dispositivi fisici. Tutto funziona correttamente in termini di sincronizzazione di tutti i dati di cui ho bisogno, l'unica cosa sbagliata è che vedo l'account nell'elenco e non lo voglio.Nascondi account fittizio per adattatore di sincronizzazione dalle impostazioni

mio authenticator.xml è:

<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" 
    /> 

mio syncadapter.xml è:

<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" 
    /> 

E aggiungo la mia adpater in questo modo:

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); 
} 

E l'ottengo il account nell'elenco degli account e nell'elenco degli account aggiunti.

Aiuto per favore! :)

+0

Sono molto interessato alla risposta di questa domanda (se c'è un modo migliore) –

+0

Lo stesso problema qui. Ho preso tutto dai doc come te - non voglio che un account fittizio sia visibile, ma mostra sempre semplicemente! :-(Che cosa è rotto qui? – Zordid

risposta

3

Questa non è una risposta reale, ma se si rimuove l'etichetta da authenticator.xml, non viene visualizzata nell'elenco degli account aggiunti, ma l'icona è presente senza etichette nell'elenco dopo aver fatto clic Aggiungi account. Brutto e probabilmente non è una buona idea. (questo metodo nasconde l'account almeno sul mio nexus 4 in esecuzione 4.4 - non ho ancora controllato altri dispositivi).

Credo che il flag visibile dell'utente nell'adattatore di sincronizzazione influenzi solo la visualizzazione della parte di sincronizzazione dopo aver selezionato un account, in cui è possibile visualizzare l'ultima sincronizzazione, impostare le impostazioni di sincronizzazione automatica e attivare la sincronizzazione.

Mi piacerebbe saperlo anche questo. Deve essere possibile, in quanto non vedo la mia lista degli account piena di conti fittizi. Quindi o c'è un modo o quasi nessuno delle mie app installate sono fastidiose con gli adattatori di sincronizzazione?

4

Ho trovato la soluzione. Questo è il modo in authenticator.xml dovrebbe essere simile:

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

    /> 

Non devi avere queste righe:

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

Se li metti, l'account sarà visibile ovunque si imposta Android: userVisible =" falso "o no.

+4

Hai ancora una riga vuota nella lista degli account disponibili, Se vai in Impostazioni> Aggiungi account, ora c'è una riga vuota in alto per me. Hai anche ricevuto degli avvisi stampati in il registro dall'app impostazioni, con il nome del pacchetto, non ideale: 2671-2671 /? W/ChooseAccountActivity: nessuna risorsa etichetta per tipo di account my.package.name.account 2671-2671 /? W/ChooseAccountActivity: Nessuna risorsa icona per tipo di account my.package.name.account 2671-2671 /? W/AuthenticatorHelper: nessuna icona etichetta per tipo di account my.package.name.account – Jason

+0

Vero, c'è una posizione vuota nell'elenco Aggiungi account. Quindi, in che modo le persone utilizzano account fittizi o non utilizzano affatto gli adattatori di sincronizzazione? – Astagor