我有一个自定义帐户,SyncAdapter和相应的服务等设置并在模拟器(Nexus 5X API 25)上运行得相当好。我目前只是试图手动调用onPerformSync进行测试和理解,所以我使用以下代码 -
Account acct = getMyAccount() ;
Bundle bundle = new Bundle();
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
if(permissionsHelper.canDoCalendar()){
ContentResolver.requestSync(acct, "com.android.calendar", bundle);
}else{
Log.e(LOG_TAG, "Permissions not yet granted..Wont start syncadatper") ;
}
此代码适用于模拟器,但不适用于我的真实手机。调用ContentResolver.requestSync但在此之后,没有任何反应。我可以在模拟器上使用调试器,但物理设备上的调试器在requestSync之后不起作用,我也没有看到任何错误或堆栈跟踪 - 我一直在查看没有任何过滤器的日志,以确保我不会错过日志由其他进程发出(尽管模拟器不在另一个进程中运行adatper)。我没有在adatper服务配置中提供android:process选项。
使用targetSDK 25
服务配置:
<service
android:name=".core.calendar.SyncAdapterService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/calendar_syncadapter" />
</service>
SyncAdatper配置
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.android.calendar"
android:accountType="xxxxxx" <-- removed for the time from post
android:userVisible="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
android:supportsUploading="false"
/>
答案 0 :(得分:0)
尝试添加此设置:
bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);