0

Jelly Bean より前のどのバージョンの Android でも問題なく動作するアプリケーションがあります。私は数日間髪を引っ張っています。デバイスに表示されるプログラムで作成したイベントが、Web カレンダーへの送信を拒否しているようです。同期は一般的に高速であるように見えますが (したがって、より優れています)、壊れているように見えますか??? イベントを同期できるようにする、または同期されないようにするために、イベントに設定する必要があるものはありますか??

デバイスのカレンダーを使用して手動で作成したイベント - それらは同期などを行うためです。プログラムで作成した新しいイベントは、デバイスの ChangeObserver をトリガーし、デバイスのカレンダーに表示されますが、リモートではありません。したがって、これらのイベントが送信されないようにして帯域幅を節約する魔法が隠れているに違いありません。-- これは、Jelly Bean に追加されたと想像できる最適化です。

このような行為をご存知でしたら教えてください。そうでない場合は、あなたが関与しているカスタム アプリの Jelly Bean で同期が適切に機能しているかどうかをお知らせください。ご協力いただきありがとうございます。

次のステップは、この失敗を実証できる小さなテスト アプリを構築することです。しかし、それがより簡単で、あなたの誰かがこの問題についてすでに知っていることを願っています.

4

1 に答える 1

0

これを見つけるのに長い時間がかかりました。それが他の誰かに役立つことを願っています。イベントを追加する際に、いつものように呼び出していました

ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, title);
values.put(Events.DESCRIPTION, description);
values.put(Events.EVENT_LOCATION, location);
values.put(Events.CALENDAR_ID, mCalendarTag.mID);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());
Uri uri = mContentResolver.insert(Events.CONTENT_URI, values);

Jelly Bean の前は、これで問題なく動作していました。Jelly Bean の場合、次の行:

values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getDisplayName());

通知なしで失敗します。これは次のように変更する必要があります。

values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

その後、すべてが正常に機能します。本当の問題は、getDisplayName() で作成されたイベントがローカルで作成され、リモートで同期されないことです。他の誰かがこれを見て、数日節約できることを願っています.

于 2012-09-27T23:24:22.790 に答える