Adapter synchronizacji bez Konta

Muszę pobrać niektóre dane przez chmurę z mojej aplikacji. Oglądałem wideo Google IO na RESTful Android apps @ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s zaleca w końcowych slajdach, aby użyć SyncAdapter do integracji z systemem Android.

Później dowiedziałem się, że trzeba użyć konta do wdrożenia SyncAdapter. Moja aplikacja nie używa konta. Użytkownicy mogą swobodnie pobierać dane bez rejestracji. Czy nadal mogę używać SyncAdapter? Czy istnieje manekin giełdowy konto, które mógłbym wykorzystać?

Edit: mam dostawcę treści dla mojej aplikacji, więc to nie problem

Edit2: właśnie spojrzałem na pogodę i aplikacje zapasowe w ustawieniach - > konta i synchronizacja. Możesz zobaczyć, że umożliwiają synchronizację, ale nie mają przycisku Usuń konto. Z drugiej strony, Aplikacje Google, Facebook i Skype umożliwiają synchronizację oraz mają przycisk Usuń konto. Oznacza to, że pogoda i zapasy nie używają kont, Podczas gdy Google, Facebook i Skype.

The tutoriale, które znalazłem @ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter / i @ http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1 / Powiedz, że trzeba mieć konto, aby korzystać z adaptera synchronizacji. : S ???

Author: siamii, 2011-02-28

3 answers

Utworzyłem adapter synchronizacji kontaktów, w którym nie mam autoryzacji konta i ekranów konfiguracji. To nie było takie trudne. Nie sądzę, że zajmowanie się kontem na Androida było aż takim interesem.

Cytat z twojego tutoriala link:

Zła wiadomość jest taka, że nie ma funkcjonalność "stock", aby dać ci łatwy sposób na założenie konta w system. Jednak w tej samej synchronizacji Przykład adaptera, który pochodzi z SDK jest dużo Kod możesz pożyczka pod zastaw konta funkcjonalność. Chyba, że pragniesz niestandardowy ekran poświadczeń, możesz heist all the code in the com.przykład.android.samplesync.authenticator pakiet z tylko kilkoma drobnymi zmianami.

Więc to w zasadzie tylko kopiowanie i wklejanie z przykładu, to prawie to co zrobiłem i działało dobrze.

Nie wiem na pewno, ale wszystkie adaptery, które nie mają "Usuń konto", wydają się być wbudowane w karty ROM na wszystkich urządzeniach Oglądałem. Nie wiem, czy musisz się tym martwić.

 11
Author: Shane Powell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-01 03:39:05

Jak mówią Android Developer docs

Nawet jeśli Twoja aplikacja nie korzysta z kont, nadal musisz DOSTARCZYĆ komponent authenticator. Jeśli nie używasz konta lub logowania na serwerze, informacje obsługiwane przez authenticator są ignorowane, więc możesz dostarczyć komponent authenticator zawierający implementacje metod początkowych. Należy również zapewnić powiązaną usługę, która umożliwia framework adaptera synchronizacji wywoływanie metod uwierzytelniania.

Istnieje cała artykuł o tworzeniu Stub Authenticatora . Zdaję sobie sprawę, że to pytanie jest stare i odpowiedź została przyjęta dawno temu, ale czułem, że niedawny dodatek do oficjalnych dokumentów powinien być tutaj.

 18
Author: nindalf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-05 11:06:27

Otrzymuję wiele powiadomień z tego pytania, więc pomyślałem, że podzielę się tymi informacjami. W ten sposób dodajesz SyncAdapter bez Konta. Możesz umieścić to w onCreate z MyApplication extends Application klasy. Zakłada to, że masz już zaimplementowane SyncAdapter i ContentProvider. Możesz to zrobić, postępując zgodnie z samouczkami wymienionymi w pytaniu.

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

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

Res / 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"
/>
 12
Author: siamii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-18 20:55:34