2011-01-04 4 views
0

У меня есть приложение, которое вставляет события календаря в календари Android с помощью провайдера content://com.android.calendar/events (для Android 2.2, иначе это content://calendar/events).Вкладка календаря на Galaxy S не синхронизируется с Календарем Google

Это нормально работает, и на моем Nexus One события добавляются и синхронизируются правильно до Календаря Google.

Однако на Galaxy S новые события, добавленные в календарь аккаунта Google, отображаются правильно на телефоне, но не синхронизируются с Календарем Google. Даже после того, как синхронизация произошла в настройках телефона, новое событие не отображается в Календаре Google (просматривается в Интернете).

Принимая во внимание, что на том же телефоне новое событие, добавленное в тот же календарь Google, с помощью встроенного приложения календаря Samsung, синхронизируется с Google Календарем.

Кто-нибудь знает, как я могу синхронизировать новые события с Google с помощью Galaxy S?

Часть кода: мои фактические вставки сделаны так:

Builder b = ContentProviderOperation.newInsert("content://com.android.calendar/events").withValues(values); 
ops.add(b.build());  
getContentResolver().applyBatch("com.android.calendar", ops); 

Это похоже на то, как фондовый Android календарь приложение делает вставки, как показано в классе AOSP EditEvent.

+1

Помните, что поставщик контента, который вы используете, является функцией приложения, а не операционной системы. Это приложение и его поставщик контента могут или не могут быть использованы на каком-либо данном устройстве, могут или не могут быть изменены на каком-либо данном устройстве и т. Д. Если бы я должен был догадаться, модифицированное приложение Samsung не использует сам интерфейс поставщика контента, выбор другого частного API, поддерживающего синхронизацию. – CommonsWare

ответ

3

Пожалуйста, обратите внимание, когда вы делаете такие вещи, как пишут сырые нити, такие как:

"content://com.android.calendar/events" 
"com.android.calendar" 

Вы используете частные API. Нет никаких гарантий, что это будет работать на какой-либо конкретной платформе или устройстве, поскольку они не являются частью SDK.

В настоящее время нет общедоступного API для базы данных календаря.

2

Правило Commonsware. Samsung изменил приложение календаря на своих телефонах. Приложение использует не только календари google, exchange и facebook, но также добавляет календарь «Collecter» под названием «Мой календарь».

Приложение для календаря на Galxy S с TouchWiz является ошибкой. Некоторые вещи работают, некоторые - нет. Существует известная ошибка, которая показывает все дневные события, заканчивающиеся в предыдущий день. Пока официальное обновление версии 2.2 не будет выпущено, этот календарь ненадежен.

Другие телефонные компании также могут делать то же самое со своими телефонами, потому что, как указывает @hackbod, для базы данных календаря нет открытого API.

+0

PS. На Nexus One и других устройствах с Android-браузером, вероятно, единственным календарем является календарь Google. На телефонах Samsung Galaxy S автоматически появляется 2 календаря. Мой календарь и Календарь Google. Вам нужно будет получить список календарей, чтобы выяснить, в каком порядке они находятся. Скорее всего, вы отправляете в календарь «Мой календарь», который не синхронизируется с Google. – Phobos

+0

Привет Фобос. Спасибо за комментарий, но я знаю о Samsung «Мой календарь». Я добавляю события в календарь аккаунта Google, и они появляются на телефоне, но не синхронизируются. – oli

Смежные вопросы