2016-10-23 4 views
0

私はすべてのユーザーイベントとカレンダーを取得するアプリを開発中です。 しかし、私は終日イベントを作成したユーザーと、誕生日や休日のようにカレンダーに自動的に追加したユーザーを区別したいと思います。祝日と誕生日を区別する方法と、ユーザーがすべての曜日のイベントを作成する方法

cursor = contentResolver.query(Uri.parse("content://com.android.calendar/calendars"), 
      (new String[]{Calendars._ID, Calendars.CALENDAR_DISPLAY_NAME, Calendars.CALENDAR_ACCESS_LEVEL}), null, null, null); 

と、このようなイベント:

私はこのようなすべての異なるカレンダーを取得また

Cursor eventCursor = contentResolver.query(builder.build(), 
       new String[]{"title", "begin", "end", "allDay"}, "(" + Events.CALENDAR_ID + " = ?)", 
       new String[]{String.valueOf(userCalendar.id)}, "startDay ASC, startMinute ASC"); 

を、誰かが利用できるGoogleカレンダーとイベントのリストに私を指示してくださいすることができますフィールド?私はどこでもそれらを見つけることができなかったいくつかの理由で ...

おかげで、今、私はちょうどあなたが直接、区別カントのアクセスレベル

if (userCalendar.accessLevel != Calendars.CAL_ACCESS_READ) 
+0

場所を持ってきたイベントのため

コードは、ここで私はすでに以下の半答えを掲載...それに戻って取得する機会があったことはありません –

+0

。 もっと良いことはありません... –

+0

実際に私は周りの仕事を見つけましたが、それは効果的ではありませんが、答えとして共有します。ほかの人のため –

答えて

0

イベントを誕生日、休日またはユーザーが作成したイベントとして表示します。 しかし、私は回避策を行った、私のアプリケーションのためLinkedOutイベントに基づいて連絡先を整理する。だから私は誕生日ではなく実際のイベントだけを欲しい。

私は場所を持っているイベントしか取っていませんでした。なぜなら、私が望むイベントの種類には場所があるからです。

誕生日だけが必要な場合は、イベント名に「誕生日」が含まれているイベントをフィルタリングします。 他のすべてのイベントは、場所がなく、名前に「誕生日」が含まれません。

いつも正しいとは限りませんが、今のところうまくいくと思います。 uはそれを解決した場合、ウル答えを与える

public void getDataFromEventTable() { 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR}, 121); 
    } 
    Cursor cur = null; 
    ContentResolver cr = getContentResolver(); 

    String[] mProjection = 
      { 
        "_id", 
        CalendarContract.Events.TITLE, 
        CalendarContract.Events.EVENT_LOCATION, 
        CalendarContract.Events.DTSTART, 
        CalendarContract.Events.DTEND, 
      }; 

    Uri uri = CalendarContract.Events.CONTENT_URI; 

    cur = cr.query(uri, mProjection, null, null, null); 

    while (cur.moveToNext()) { 

     String title = cur.getString(cur.getColumnIndex(CalendarContract.Events.TITLE)); 
     String loc = cur.getString(cur.getColumnIndex(CalendarContract.Events.EVENT_LOCATION)); 
     if(loc.length()>0) 
      Log.e("event",title+" "+loc); 
    } 

} 
0

に応じてフィルタリングしてるためだけでなく

関連する問題