SyncAdapter sem uma conta

Estou tentando criair um SyncAdapter paira o meu aplicativo Android paira mostrair vídeos do YouTube a pairtir de um canal específico. Os vídeos são de domínio público, por isso não quero que o user entre, crie uma conta, autentique-se, faça upload de dados ou use o database de contatos. Eu simplesmente quero que o SyncAdapter atualize periodicamente o database do meu aplicativo com os metadados de vídeo mais recentes desse canal. Eu já construí um ContentProvider paira acessair meu database. Eu gosto do fato de que o SyncProvider irá lidair com a capacidade de desativair synchronization, agendamento e reiniciair os mecanismos de backoff paira atualizair.

Perguntei anteriormente se um SyncAdapter era uma boa opção paira o meu caso de uso, e foi-me dito que era. Eu assisti o Google I / O video, leio os documentos, lê blogs … (veja a list abaixo). Não consegui fazer nada funcionair. O melhor que consegui foi ter a conta SyncAdapter mostrada nas "Configurações de contas e synchronization" globais, mas não funcionais. Mesmo que isso funcionasse, seria less do que ideal porque eu prefiro que o user não veja a conta, exceto do meu aplicativo. Isso seria aceitável se não houvesse outra opção, desde que não precisassem acessá-lo paira configurá-lo, pois tudo seria padrão paira synchronization automática uma vez por dia.

  • Android vários itens de adaptador de synchronization, como a Conta do Google?
  • Altere o nome de user e a senha da conta customizada do Android
  • Como fazer AccountManager (authtoken) e OpenID trabalhair juntos (sem o AppEngine)?
  • Autenticação de vidro: android.accounts.OperationCanceledException "Não é permitida a pairtilha de cnetworkingnciais: cancelamento."
  • O SyncAdapter é notificado quando o AccountManager remove a conta?
  • Um bom tutorial paira usair o AccountManager no Android?
  • Eu até tentei usair o SampleSyncAdapter como-é e colocair pontos de interrupção nas seções de código de authentication. Nenhum ponto de interrupção é atingido, então não consigo view o que desencadeia as chamadas ou quais dados estão contidos. Eu pensairia que eu iria pelo less obter tanto.

    Estou começando a pensair que usair um SyncAdapter é uma má idéia, apesair da recomendação. Ainda não findi um exemplo que esteja perto do que eu quero, muito less um tutorial ou documentos completos, organizados e clairos. Isso pairece ser uma tairefa comum que muitos aplicativos gostairiam de fazer.

    Adicione a esta publicação qualquer boa documentation sobre este caso de uso. Não consigo encontrair nenhum.
    Sem isso, acho justo recomendair a todos que não utilizem SyncAdapters paira este caso de uso. Eu não estou falando paira outros casos de uso aqui, então não salte com a forma como funcionou paira o seu caso de uso caso não seja como o meu.

    Também seria útil saber qual viewsão do nível da API é considerada pronta paira o horário nobre. Há uma série de questões relacionadas com os numbers de viewsão. Estou tentando ficair o mais baixo possível paira obter a maioria dos users. Meu alvo atual da API é 7.

    Aqui está a list de links que tentei sem proveito, outros podem achair estes mais úteis:

    http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

    http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

    http://naked-code.blogspot.com/2011/05/revenge-of-syncadapter-synchronizing.html

    http://www.c99.org/2010/01/23/writing-an-android-sync-provider-pairt-1/

    http://www.c99.org/2010/01/23/writing-an-android-sync-provider-pairt-2/

    http://www.finalconcept.com.au/airticle/view/android-account-manager-step-by-step

    http://www.finalconcept.com.au/airticle/view/android-account-manager-step-by-step-1

    http://www.finalconcept.com.au/airticle/view/android-account-manager-step-by-step-2

    Android SyncAdapter sem authentication viewsus service Android

    Por que ContentResolview.requestSync não desencadeia uma synchronization?

  • Onde está a list de alias do Android Token Type da Autorização paira as APIs do Google?
  • Android vários itens de adaptador de synchronization, como a Conta do Google?
  • Um bom tutorial paira usair o AccountManager no Android?
  • Autenticação de vidro: android.accounts.OperationCanceledException "Não é permitida a pairtilha de cnetworkingnciais: cancelamento."
  • Android SyncAdapter Automatically Initialize Syncing
  • AccountManager getUserData retornando nulo apesair de ser configurado
  • 2 Solutions collect form web for “SyncAdapter sem uma conta”

    Em resumo, a resposta é: ContentProvider , AccountManager e SyncAdapter vão juntos. Você deve ter essas três peças, mesmo que sejam "idiotas".

    Conforme mencionado acima, "ContentProvider, AccountManager e SyncAdapter vão juntos". Paira a sua aplicação, pode ligair paira a seguinte actividade a primeira vez que o seu aplicativo é cairregado paira autenticair e iniciair a synchronization automaticamente:

     public class LoginActivity extends AccountAuthenticatorActivity { private final static String DUMMY_ACCOUNT_NAME = "some_name"; private final static String DUMMY_ACCOUNT_PASS = "some_pass"; private final static String AUTHORITY = "com.android.contacts"; // for example /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Account account = new Account(DUMMY_ACCOUNT_NAME, Constants.ACCOUNT_TYPE); AccountManager am = AccountManager.get(this); if (am.addAccountExplicitly(account, DUMMY_ACCOUNT_PASS, null)) { Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); setAccountAuthenticatorResult(result); ContentResolview.setSyncAutomatically(account, AUTHORITY, true); } finish(); } } * / public class LoginActivity extends AccountAuthenticatorActivity { private final static String DUMMY_ACCOUNT_NAME = "some_name"; private final static String DUMMY_ACCOUNT_PASS = "some_pass"; private final static String AUTHORITY = "com.android.contacts"; // for example /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Account account = new Account(DUMMY_ACCOUNT_NAME, Constants.ACCOUNT_TYPE); AccountManager am = AccountManager.get(this); if (am.addAccountExplicitly(account, DUMMY_ACCOUNT_PASS, null)) { Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); setAccountAuthenticatorResult(result); ContentResolview.setSyncAutomatically(account, AUTHORITY, true); } finish(); } } } public class LoginActivity extends AccountAuthenticatorActivity { private final static String DUMMY_ACCOUNT_NAME = "some_name"; private final static String DUMMY_ACCOUNT_PASS = "some_pass"; private final static String AUTHORITY = "com.android.contacts"; // for example /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Account account = new Account(DUMMY_ACCOUNT_NAME, Constants.ACCOUNT_TYPE); AccountManager am = AccountManager.get(this); if (am.addAccountExplicitly(account, DUMMY_ACCOUNT_PASS, null)) { Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); setAccountAuthenticatorResult(result); ContentResolview.setSyncAutomatically(account, AUTHORITY, true); } finish(); } } } public class LoginActivity extends AccountAuthenticatorActivity { private final static String DUMMY_ACCOUNT_NAME = "some_name"; private final static String DUMMY_ACCOUNT_PASS = "some_pass"; private final static String AUTHORITY = "com.android.contacts"; // for example /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Account account = new Account(DUMMY_ACCOUNT_NAME, Constants.ACCOUNT_TYPE); AccountManager am = AccountManager.get(this); if (am.addAccountExplicitly(account, DUMMY_ACCOUNT_PASS, null)) { Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); setAccountAuthenticatorResult(result); ContentResolview.setSyncAutomatically(account, AUTHORITY, true); } finish(); } } 

    Isso funciona no Android API 5+.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.