2014-06-13 18 views
0

我想獲得定期事件的一個實例的id,我在做這個任務這樣如何從android calender api獲取事件實例?

         final String[] INSTANCE_PROJECTION = new String[] { 
              Instances.EVENT_ID,  // 0 
              Instances.BEGIN,   // 1 
              Instances.TITLE   // 2 
              }; 
            Calendar beginTime = Calendar.getInstance(); 
            beginTime.set(2011, 9, 23, 8, 0); 
            long startMillis = beginTime.getTimeInMillis(); 
            Calendar endTime = Calendar.getInstance(); 
            endTime.set(2011, 10, 24, 8, 0); 
            long endMillis = endTime.getTimeInMillis(); 

            Cursor cur = null; 
            ContentResolver cr = view.getContext().getContentResolver(); 

            String selection = Instances.EVENT_ID + " = ?"; 
            String[] selectionArgs = new String[] {"207"}; 

            Uri.Builder builder = Instances.CONTENT_URI.buildUpon(); 
            ContentUris.appendId(builder, startMillis); 
            ContentUris.appendId(builder, endMillis); 

            final int PROJECTION_ID_INDEX = 0; 
            final int PROJECTION_BEGIN_INDEX = 1; 
            final int PROJECTION_TITLE_INDEX = 2; 

            cur = cr.query(builder.build(), 
              INSTANCE_PROJECTION, 
              selection, 
              selectionArgs, 
              null); 

            while (cur.moveToNext()) { 
             String title = null; 
             long eventID = 0; 
             long beginVal = 0;  

             // Get the field values 
             eventID = cur.getLong(PROJECTION_ID_INDEX); 
             beginVal = cur.getLong(PROJECTION_BEGIN_INDEX); 
             title = cur.getString(PROJECTION_TITLE_INDEX); 

             // Do something with the values. 
             //Log.i(DEBUG_TAG, "Event: " + title); 
             Calendar calendar = Calendar.getInstance(); 
             calendar.setTimeInMillis(beginVal); 
             SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
             //Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));  
             Toast.makeText(view.getContext(), "Date: " + formatter.format(calendar.getTime()), Toast.LENGTH_SHORT).show(); 

,但它不工作,我不明白的地方我有沒有出問題。如果有人遇到問題,請告訴我。

+0

我得到了同樣的問題,仍然沒有能夠找到一個解決方案。 –

回答

1

我已經成功做到了,現在我能得到一個實例..這裏是代碼:

final String[] INSTANCE_PROJECTION = new String[] { 

              Instances.EVENT_ID,  // 0 
              Instances.BEGIN,   // 1 
              Instances.TITLE   // 2 
              }; 
            Calendar beginTime = Calendar.getInstance(); 
            beginTime = selectedAppointmentInstance.getStartDate(); 
            long startMillis = beginTime.getTimeInMillis(); 
            Calendar endTime = Calendar.getInstance(); 
            endTime = selectedAppointmentInstance.getEndDate(); 
            long endMillis = endTime.getTimeInMillis()-1; 

            Cursor cur = null; 
            ContentResolver cr = view.getContext().getContentResolver(); 

            String selection = Instances.EVENT_ID + " = ?" ; 
            String[] selectionArgs = new String[] {selectedAppointmentInstance.getAppointmentId()}; 

            Uri.Builder builder = Instances.CONTENT_URI.buildUpon(); 
            ContentUris.appendId(builder, startMillis); 
            ContentUris.appendId(builder, endMillis); 




            String where=Instances.EVENT_ID + " = " + selectedAppointmentInstance.getAppointmentId(); 
            final int PROJECTION_ID_INDEX = 0; 
            final int PROJECTION_BEGIN_INDEX = 1; 
            final int PROJECTION_TITLE_INDEX = 2; 

            cur = cr.query(builder.build(), 
              INSTANCE_PROJECTION, 
              selection, 
              selectionArgs, 
              null); 

            while (cur.moveToNext()) { 
             String title = null; 
             long eventID = 0; 
             long beginVal = 0;  

             // Get the field values 
             eventID = cur.getLong(PROJECTION_ID_INDEX); 
             beginVal = cur.getLong(PROJECTION_BEGIN_INDEX); 
             title = cur.getString(PROJECTION_TITLE_INDEX); 

             // Do something with the values. 
             //Log.i(DEBUG_TAG, "Event: " + title); 
             Calendar calendar = Calendar.getInstance(); 
             calendar.setTimeInMillis(beginVal); 
             SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
             //Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));  
             Toast.makeText(view.getContext(), "Date: " + formatter.format(calendar.getTime()), Toast.LENGTH_SHORT).show(); 






            } 
+0

這是偉大的感謝你解決它的人...採取我的upvote .. :) –