2011-12-21 3 views
4

Nexus SでAPIが7のAPPを開発していたときに、カレンダーに新しいイベントを作成する際に問題はありませんでした。Android 4.0のカレンダーの場所はどれですか?

私は自分の携帯電話上のカレンダーの位置を取得するためにそのコードを使用:

cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null); 

問題を、私はアンドロイドICS 4.0に私のネクサスSを更新したときに来ました。コードを変更することなく、私は間違いを犯しました。 logcatで 私は読んでませんでした:

  • はそのような列を:もちろん、カーソルの表示名、 デシベル= /データ/データ/ com.android.providers.calendar /データベース/ calendar.db

ですヌル。 カレンダーデータベースが変更されている可能性はありますか? だから、私は、私は、Android 4.0

感謝のAPI 7のアプリケーションを開発する新しいカレンダーイベントを作成する方法を知りたいのですが、あなたは確認することもできますので)

答えて

3

カレンダープロバイダは、Androidの4.0に新しく追加されましたドキュメント:前のフローズンヨーグルトのバージョンの

http://developer.android.com/guide/topics/providers/calendar-provider.html

は、私はカレンダーがcontent://calendar/calendarsに位置していたことを知っているが、それ以来変わっています。

+0

固定されました。ありがとう;)イベントを特定のカレンダーに追加するコードを記述します。事実、カレンダーの表の列名が変更されました。 – ElChencho

+0

私はできることを助けるために喜んで。 –

5

Android 4.0では、カレンダーはAndroid 2.3と同じUriにあります。だから私は他の人が同じ問題を抱えている場合に備えて自分のコードを付けます。

public void addToCalendar(Context ctx, final String title, final String comment, final long dtstart, final long dtend) { 


    final ContentResolver cr = ctx.getContentResolver(); 
    Cursor cursor ; 

    cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id","calendar_displayName" }, null, null, null); 

    /*if (Integer.parseInt(Build.VERSION.SDK) == 8) 
     cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayname" }, null, null, null); 
    */ 

    //Get all the calendar ids and name available in the phone 
    if (cursor.moveToFirst()) { 
     final String[] calNames = new String[cursor.getCount()]; 
     final int[] calIds = new int[cursor.getCount()]; 
     for (int i = 0; i < calNames.length; i++) { 
      calIds[i] = cursor.getInt(0); 
      calNames[i] = cursor.getString(1); 
      cursor.moveToNext(); 
     } 

     //Creation of a new event in calendar whose position is 0 on the phone 
     ContentValues cv = new ContentValues(); 
     cv.put("calendar_id", calIds[0]); 
     cv.put("title", title); 
     cv.put("dtstart", dtstart); 
     cv.put("dtend", dtend); 
     cv.put("eventTimezone","Spain"); 
     cv.put("description", comment); 

     //Insertion on the events of the calendar 
     cr.insert(Uri.parse("content://com.android.calendar/events"), cv); 

     /*Uri newEvent ; 
     if (Integer.parseInt(Build.VERSION.SDK) == 8) 
      newEvent = cr.insert(Uri.parse("content://com.android.calendar/events"), cv); 
     */ 

     finish(); 

    } 
    cursor.close(); 

} 

あなたにはすべての情報を持っている:ジョンが前に言ったようにhttp://developer.android.com/guide/topics/providers/calendar-provider.html

関連する問題