gpt4 book ai didi

java - Android - 设置同步适配器时启用自动同步

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:42:34 25 4
gpt4 key购买 nike

我正在编写一个使用同步适配器来同步数据的应用程序。

我已经阅读了文档,并且我很确定我了解它是如何工作的。通过遵循此 great guide,我的大部分同步适配器都可以正常工作由 Udi Cohen 撰写。

但是我确实有一个似乎无法解决的问题,那就是在安装我的应用程序时自动启用同步。

当我的应用程序运行起来时,它会创建一个同步适配器和一个帐户,完成您希望它完成的所有工作,这很棒。但是,如果我转到“设置”>“帐户”>“我的应用程序”,同步将关闭。无论如何我可以让它自动启用吗?

Screenshot of Accounts > 'My App'

设置同步适配器时,我的代码如下所示:

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

通过阅读同步适配器,我相信 ContentResolver.setSyncAutomatically() 是用于自动启用同步的正确方法。

我也试过设置 ContentResolver.setMasterSyncAutomatically(true); 但这似乎没有任何效果。

我在我的 AndroidManifest 中声明了权限 android.permission.WRITE_SYNC_SETTINGS,所以这不是问题所在。我的项目中也有同步服务和 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>

同步适配器.xml

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="com.companyname.rostering"
android:allowParallelSyncs="true"
android:contentAuthority="com.android.calendar"
android:isAlwaysSyncable="true"
android:supportsUploading="true"
android:userVisible="true"/>

最佳答案

我最终找到了导致我的问题的原因。

在我的 syncadapter.xml 中,我将我的内容权限设置为 android:contentAuthority="com.android.calendar" .

但是,在我使用 ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true); 将同步设置为自动的代码中我的内容权限值实际上设置为与我在 XML 中的内容权限不同的值。

设置同步适配器时的内容权限必须与 XML 中使用的内容权限相匹配。

关于java - Android - 设置同步适配器时启用自动同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36738114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com