我正在编写一个使用同步适配器来同步数据的应用程序.
我已经阅读了文档,我很确定我理解它是如何工作的.我的大部分同步适配器都是按照Udi Cohen写的伟大指南来完成的.
但是,我确实有一个问题似乎无法解决,而且在安装我的应用程序时会自动启用同步.
当我的应用程序运行时,它会创建一个同步适配器和一个帐户,完成您希望它完成的所有工作,这很棒.但是,如果我转到"设置">"帐户">"我的应用程序",则同步已关闭.无论如何我可以让它自动启用吗?
设置同步适配器时,我的代码如下所示:
if(accountManager.addAccountExplicitly(account,null,null))
{
// Inform the system that this account supports sync
ContentResolver.setIsSyncable(account, CONTENT_AUTHORITY, 1);
// Inform the system that this account is eligible for auto sync
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true);
// Recommend a schedule for auto sync
ContentResolver.addPeriodicSync(account, CONTENT_AUTHORITY, new Bundle(), SYNC_FREQUENCY);
newAccount = true;
}
Run Code Online (Sandbox Code Playgroud)
通过阅读同步适配器,我认为这ContentResolver.setSyncAutomatically()是用于自动启用同步的正确方法.
我也试过设置,ContentResolver.setMasterSyncAutomatically(true);但似乎没有任何影响.
我android.permission.WRITE_SYNC_SETTINGS在AndroidManifest中声明了权限,所以这不是问题所在.我的项目中也有同步服务和xml文件.我在下面附上了这些代码.
还有其他人有过类似的问题吗?这可能是权限问题吗?如果有人有任何建议我会很乐意尝试.谢谢.
AndroidManifest.xml中
<service
android:name=".syncadapter.CalendarSyncService"
android:exported="true"
android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/calendar_syncadapter"/>
</service>
Run Code Online (Sandbox Code Playgroud)
syncadapter.xml
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" …Run Code Online (Sandbox Code Playgroud)