同步适配器没有帐户

我需要从我的应用程序通过云端获取一些数据。 我在RESTful android应用程序上观看了Google IOvideo@ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s它build议在最终幻灯片中使用SyncAdapter与Android系统进行集成。

后来我了解到,必须使用一个帐户来实现SyncAdapter。 我的应用程序不使用帐户。 用户无需注册即可自由下载数据。 我还可以使用SyncAdapter吗? 有没有我可以使用的股票虚拟账户?

编辑:我有我的应用程序的内容提供商,所以这不是一个问题

编辑2:我刚刚在设置 – >帐户和同步下查看天气和股票应用程序。 您可以看到它们允许同步,但没有删除帐户button。 另一方面,谷歌,Facebook和Skype应用程序允许同步PLUS他们有一个删除帐户button。 这意味着天气和股票不使用帐户,而Google,Facebook和Skype。

我发现的教程@ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/和@ http://www.c99.org/2010/01/23 /写-Android-sync-provider-part-1 /说一个必须有一个帐户使用同步适配器。 :S?

我创build了一个联系人同步适配器,我没有帐户授权和/或configuration屏幕。 这并不难。 我不认为必须处理Android帐户的东西是一个交易。

从你的教程链接引用:

坏消息是,没有“股票”function给你一个简单的方法来提供一个帐户的系统。 但是,在SDK附带的同一个同步适配器示例中,您可以借用很多代码来为您提供帐户function。 除非您需要自定义凭据屏幕,否则只需稍作更改即可强制执行com.example.android.samplesync.authenticator程序包中的所有代码。

所以它基本上只是一个复制和粘贴从这个例子,这几乎是我所做的,它工作得很好。

我不确定,但所有没有“删除账户”的适配器似乎都是内置在我看过的所有设备上的ROM适配器。 我不确定你必须担心。

正如Android开发人员文档所说的

即使您的应用程序不使用帐户,您仍需要提供validation器组件。 如果您不使用帐户或服务器login,则authentication程序处理的信息将被忽略,因此您可以提供包含存根方法实现的authentication程序组件。 您还需要提供绑定的服务,以允许同步适配器框架调用身份validation器的方法。

有关创build存根validation器的完整文章。 我意识到这个问题很老,很久以前就被接受了,但是我觉得这里应该包括官方文件最近增加的内容。

我不断从这个问题得到很多通知,所以我想我会分享这个信息。 这是如何添加SyncAdapter没有帐户。 你可以把这个放在MyApplication extends Application onCreate上。 这假设你已经有一个SyncAdapterContentProvider实现。 您可以按照问题中列出的教程来做到这一点。

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