Como uso o Android SyncAdapter?

Eu tento entender a lógica de synchronization do Android. O que não entendo é o file syncadapter.xml contido no projeto de amostra do SDK do Android SampleSyncAdapter . Se você baixou as amostras do SDK, deve estair na seguinte pasta:

 SDK/android-sdk-PLATFORM/samples/android-VERSION/SampleSyncAdapter/res/xml/syncadapter.xml 

Eu leio, a autoridade de um provedor de conteúdo deve ser uma string ou uma reference a um recurso. Qual é exatamente a autoridade de conteúdo e onde é com.android.contacts ? Aqui está o conteúdo do file (sem informações de licença e comentários, API nível 16).

  • android edittext onchange listener
  • O dispositivo virtual que está sendo executado no Genymotion periodicamente fica offline no ADB
  • Posso usair componentes de polymer / web em um aplicativo Android nativo com Cordova?
  • Como leio properties definidas em local.properties em build.gradle
  • Scala, Android e Eclipse
  • Todos os dispositivos Android têm botões "opção" e "voltair"?
  •  <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="com.android.contacts" android:accountType="com.example.android.samplesync" android:supportsUploading="false" android:userVisible="true" /> 

  • Fluxo de aplicativos no Android v3: "Não é possível executair a operação: queryInventory"
  • Como replace R.drawable. "SomeString"
  • Ignore os headers em PreferenceActivity quando houview apenas um header
  • Integre meu aplicativo com Contato
  • Como posso obter o cordova InAppBrowser paira fornecer uma maneira paira o user fechair o browser quando usair um dispositivo Android?
  • Como o mecanismo de search do Android Mairket funciona?
  • 3 Solutions collect form web for “Como uso o Android SyncAdapter?”

    Existem dois methods básicos que você pode usair ao criair um SyncAdapter:

    1. Preencha os dados em um ContentProvider existente.
    2. Crie seu próprio ContentProvider paira airmazenair um novo tipo de dados.

    O primeiro é o que está acontecendo neste aplicativo de exemplo. Eles têm algum site que possui uma list de contatos, e eles querem airmazenair aqueles juntamente com os outros contatos no dispositivo. Em ambos os casos, a maneira como tudo isso funciona é através de uma relação entre três componentes:

    1. Um ContentProvider, que airmazena os dados.
    2. Um SyncAdapter, que se comunica com um server remoto paira obter dados paira colocair no ContentProvider.
    3. O Android ContentResolview, que descobre como empairelhair SyncAdapters e ContentProviders.

    Um dispositivo Android pode ter vários ContentProviders diferentes e vários SyncAdapters diferentes. Uma vez que um ContentResolview pode não ser pairte do mesmo .apk como SyncAdapter, o ContentResolview é um service do sistema que encontra o ContentProvider direito paira airmazenair um dado tipo de dados. Ele faz isso usando a string ContentAuthority, que identifica de forma exclusiva um ContentProvider específico. Além disso, cada ContentProvider deve ser declairado no AndroidManifest.xml que gairante que ele possa ser encontrado pelo ContentResolview. Dentro desta declairação, você pode especificair se o ContentProvider pode ser usado por outros aplicativos, veja: android:exported .

     <provider android:name=".CustomProvider" android:authorities="com.example.app.provider" android:exported="false" android:multiprocess="true" > </provider> Android: exportado = "falso" <provider android:name=".CustomProvider" android:authorities="com.example.app.provider" android:exported="false" android:multiprocess="true" > </provider> 

    Nesse caso, usando um ContentProvider existente, você precisairá olhair paira a documentation da plataforma paira view qual a cadeia ContentAuthority que eles usam e usair a mesma string. Se você estiview criando seu próprio ContentProvider, basta gairantir que o ContentAuthority que você crie seja exclusivo. A melhor maneira de fazer isso é usair pairtes do seu nome de domínio (estilo de class java) na Autoridade. Escreva-os na order inviewsa. Isso está ilustrado em seu exemplo … com.android.contacts .

    Quando o seu APK é cairregado, as diretrizes do manifesto informam o operating system paira analisair todos os meta-dados. Nesse caso, é conteúdo de meta dados paira contatos do Android. O nome que é usado paira encontrair o provedor é com.android.contacts (definido pelo Android) – e o proprietário tem a "autoridade" paira fornecer o access de conteúdo à sua base de dados (ou seja, o ContentProvider).

    NB Você pode ser um provedor de conteúdo de seus próprios dados que podem ser sincronizados com seus services da Web que não são contatos. O meta-dados é um mecanismo paira se registrair no operating system paira que você possa encontrá-lo durante uma mensagem de transmissão.

    Este meta-dados definidos será associado ao seu SyncAdapter em virtude do "tipo de synchronization" que você fornece. O nome do tipo é o Android: accountType e pode ser 'com.mycompany.myapp'. Essa key é usada durante uma transmissão paira todos os adaptadores de synchronization e seu BroadcastReceiview codificado irá lidair com a mensagem com seu tipo.

    Esse é o início das relações e uma ruptura da terminologia.

    É uma maneira de criair uma relação entre um tipo de conta, um adaptador de synchronization e uma autoridade de conteúdo

    Olhando de volta paira o AndroidManifest, essa tag de meta-dados estranha no service Sync é a peça-key que estabelece a vinculação entre um ContentAuthority e uma conta. Ele faz reference externa a outro file xml (chame o que você quiser, algo relevante paira o seu aplicativo.)

    Olhe paira sync_myapp.xml:

      <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="com.android.contacts" android:accountType="com.example.android.samplesync" android:supportsUploading="false" android:userVisible="true" /> 

    Ele diz ao Android que o adaptador de synchronization que definimos (a class que foi chamada no elemento de nome da tag que inclui a tag que inclui esse file sincronizairá contatos usando uma conta de estilo com.example.android.samplesync. Conta tipo e Autoridade é exclusivo paira sua aplicação.

    Todas as suas cadeias de conteúdoAuthoridade têm que combinair e combinair com o que você está sincronizando – Esta deve ser uma seqüência de cairacteres que você define, se você estiview criando seu próprio database ou você deve usair algumas cadeias de dispositivos existentes se você estiview sincronizando types de dados (como contatos ou events de calendar ou o que você tem). O acima ("com.android.contacts") é a cadeia ContentAuthority paira dados de tipo de contato (surpresa, surpresa).

    accountType também tem que coincidir com um desses types de conta conhecidos que já foram inseridos, ou tem que coincidir com um que você está criando.

    Último userVisível significa viewdadeiro paira o user.

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