4

私のアプリケーションの 1 つでは、イベントをカレンダーに挿入する必要があります。

long calID = 3;
long startMillis = 0; 
long endMillis = 0;     
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 8, 10, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 8, 10, 8, 45);
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "Jazzercise");
values.put(Events.DESCRIPTION, "Group workout");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
Uri uri = cr.insert(CalendarContract.Calendars.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
Log.d("MainActivity", "addCalendarEvents :: " + "eventID :: "+eventID);

Cursor cursor = cr.query(Events.CONTENT_URI, null, Events.TITLE +"='Jazzercise'", null, null);
Log.d("MainActivity", "addCalendarEvents :: " + "cursor :: "+cursor.getCount());

http://developer.android.com/guide/topics/providers/calendar-provider.htmlで提供 ただし、最初にエラーが発生します

 Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)

また、カーソル数はゼロです。タイトルで検索しようとすると。注: インテント サービスを使用してイベントを追加しようとしましたが、イベントを追加する際にユーザーの裁量は必要ありません。

Galaxy Nexus (4.1) と Nexus S(4.1) でテストしました。

ICS で使用する正しい UI について何か助けはありますか?

BR、ジェイシル

4

3 に答える 3

4

私はそれを理解しました。この線:

Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)

完全なレッドニシンです(つまり、無関係です)。ここに見られるように、インフラストラクチャの作業を実行する単なるフレームワーク コードです。


問題はドキュメントにあります。あなたが私のような人なら、おそらくlong calID = 3;有効なカレンダー ID を期待していたでしょう。これは有効な ID ではありません。ドキュメント用のプレースホルダーです

空のエミュレーターを使用している場合、上記のコードで行っていることは、存在しないカレンダー、つまりどこにも表示されないカレンダーにエントリを挿入することです。

必要なことは次のとおりです。

  1. 既存のカレンダーを照会して選択します。繰り返しになりますが、エミュレーターにはデフォルトのカレンダーはありません
  2. 取得した実際のカレンダー ID を使用してイベントを挿入します。

要するに、ドキュメンテーションとデバッグメッセージは十分にばかげていません;)。

于 2013-06-15T14:32:02.443 に答える
0

マニフェストファイルに正しい権限がありますか?

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

これは、表示されているエラーの原因の一部である可能性があります。

于 2012-09-10T12:03:05.620 に答える
0
content://com.android.calendar - problem is here.

そのカレンダー。

このコードで試してください:

Uri mCalendarsUri;
if (Build.VERSION.SDK_INT >= 8) {
    mCalendarsUri = Uri.parse("content://com.android.calendar/calendars");
} else {
    mCalendarsUri = Uri.parse("content://calendar/calendars");
}
于 2013-02-28T10:38:25.497 に答える