我需要从我的应用程序通过云获取一些数据。我在RESTful安卓应用程序@ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s上观看了谷歌IO视频。它建议在最终幻灯片中使用SyncAdapter与Android系统集成。
后来我了解到必须使用帐户来实现SyncAdapter。我的应用不使用帐户。用户无需注册即可自由下载数据。我还可以使用SyncAdapter吗?我可以使用股票虚拟账户吗?
编辑:我的应用程序确实有一个内容提供商,所以这不是问题
Edit2:我刚看了设置下的天气和股票应用程序 - >账户&同步。您可以看到它们允许同步,但没有删除帐户按钮。另一方面,谷歌,Facebook和Skype应用程序允许同步PLUS他们有一个删除帐户按钮。这意味着天气和股票不使用账户,而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 ???
答案 0 :(得分:18)
正如Android开发者文档所说
即使您的应用不使用帐户,您仍需要提供身份验证器组件。如果不使用帐户或服务器登录,则忽略验证者处理的信息,因此您可以提供包含存根方法实现的验证器组件。您还需要提供一个绑定服务,允许同步适配器框架调用验证器的方法。
Creating a Stub Authenticator上有一篇完整的文章。我意识到这个问题已经很久了,很久以前就接受了答案,但我觉得这里应该包含最新的官方文档。
答案 1 :(得分:12)
我不断收到这个问题的大量通知,所以我想我会分享这些信息。这是您在没有帐户的情况下添加SyncAdapter的方法。您可以将其放在onCreate
MyApplication extends Application
课程中。这假设您已经实施了SyncAdapter
和ContentProvider
。您可以按照问题中列出的教程进行操作。
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"
/>
答案 2 :(得分:11)
我创建了一个联系人同步适配器,我没有帐户授权和/或配置屏幕。这并不难。我不认为必须处理Android帐户的事情就是这么多。
从您的教程链接中引用:
坏消息是没有 “股票”功能给你一个 简单的方法来提供帐户 系统。但是,在同一个Sync中 附带的适配器示例 SDK有很多代码可以 借用给你账户 功能。除非你想要一个 自定义凭据屏幕,您可以 抢劫中的所有代码 com.example.android.samplesync.authenticator 包装只有一些小的改动。
所以它基本上只是来自示例的复制和粘贴,这几乎就是我所做的,它运行良好。
我不确定,但所有没有“删除帐户”的适配器似乎都是我所看到的所有设备上的内置ROM适配器。我不确定你是否担心它。