Адаптер синхронизации без учетной записи

Мне нужно получить некоторые данные из облака из моего приложения. Я смотрел видео в формате google в приложениях RESTful android @ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s. Он рекомендует на последних слайдах использовать SyncAdapter для интеграции с Android-системой.

Позже я узнал, что для реализации SyncAdapter необходимо использовать учетную запись. Мое приложение не использует учетную запись. Пользователи могут свободно загружать данные без регистрации. Могу ли я использовать SyncAdapter? Есть ли запасная учетная запись, которую я мог бы использовать?

Изменить: у меня есть контент-провайдер для моего приложения, так что это не проблема

Edit2: Я только что посмотрел приложения Weather and Stock в разделе «Настройки» -> «Аккаунты и синхронизация». Вы можете видеть, что они позволяют синхронизировать, но не имеют кнопки удаления учетной записи. С другой стороны, приложения Google, Facebook и Skype позволяют синхронизировать PLUS, у них есть кнопка удаления учетной записи. Это означает, что Weather and Stock не используют учетные записи, тогда как Google, Facebook и Skype.

Учебники, которые я нашел @ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/ и @ http://www.c99.org/2010/01/23 / Writing-an-android-sync-provider-part-1 / говорят, что у ДОЛЖНЫ иметь учетную запись для использования адаптера синхронизации. : S ???

Solutions Collecting From Web of "Адаптер синхронизации без учетной записи"

Я создал адаптер синхронизации контактов, в котором у меня нет учетных записей и экранов конфигурации. Это было не так сложно. Я не думаю, что иметь дело с Android-аккаунтом – это большая часть сделки.

Цитата из вашей ссылки:

Плохая новость заключается в том, что нет функциональности «запаса», чтобы предоставить вам простой способ предоставления учетной записи системе. Тем не менее, в том же примере адаптера синхронизации, который поставляется вместе с SDK, есть много кода, который вы можете взять, чтобы предоставить вам функциональность учетной записи. Если вам не нужен экран пользовательских учетных данных, вы можете использовать весь код в пакете com.example.android.samplesync.authenticator с небольшими незначительными изменениями.

Таким образом, это в основном просто копия и вставка из примера, это в значительной степени то, что я сделал, и это сработало нормально.

Я не знаю точно, но все адаптеры, у которых нет «Удалить учетную запись», похоже, являются встроенными ПЗУ-адаптерами на всех устройствах, на которые я смотрел. Я не уверен, что ты должен беспокоиться об этом.

Как говорят разработчики Android Developer

Даже если ваше приложение не использует учетные записи, вам все равно необходимо предоставить компонент аутентификатора. Если вы не используете учетные записи или учетные записи на сервере, информация, обрабатываемая аутентификатором, игнорируется, поэтому вы можете предоставить компонент аутентификатора, содержащий реализации метода заглушки. Вам также необходимо предоставить связанную службу, которая позволяет инфраструктуре адаптера синхронизации вызывать методы аутентификатора.

Существует целая статья о создании Authenticator . Я понимаю, что этот вопрос старый, и ответ был принят давно, но я чувствовал, что последнее дополнение к официальным документам должно быть включено здесь.

Я продолжаю получать много уведомлений от этого вопроса, поэтому я решил поделиться этой информацией. Вот как вы добавляете SyncAdapter без учетной записи. Вы можете поместить это в onCreate of MyApplication extends Application класс MyApplication extends Application . Предполагается, что у вас уже есть SyncAdapter и SyncAdapter . Вы можете сделать это, следуя инструкциям, перечисленным в вопросе.

 final String ACCOUNT_NAME = "MyApp"; final String ACCOUNT_TYPE = "com.myapp.account"; final String PROVIDER = "com.myapp.provider"; Account appAccount = new Account(ACCOUNT_NAME,ACCOUNT_TYPE); AccountManager accountManager = AccountManager.get(getApplicationContext()); if (accountManager.addAccountExplicitly(appAccount, null, null)) { ContentResolver.setIsSyncable(appAccount, PROVIDER, 1); ContentResolver.setMasterSyncAutomatically(true); ContentResolver.setSyncAutomatically(appAccount, PROVIDER, true); } 

Рез / XML / syncadapter.xml

 <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="@string/provider" android:accountType="@string/account_type" android:userVisible="true" android:supportsUploading="true" /> 

Рез / XML / authenticator.xml

 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="@string/account_type" android:icon="@drawable/app_icon" android:smallIcon="@drawable/app_icon" android:label="@string/app_label" />