2011-03-20 6 views
5

में कैलेंडर ईवेंट खोलें और प्रदर्शित करें एंड्रॉइड में एक नया कैलेंडर ईवेंट बनाने के तरीके पर कई उदाहरण हैं लेकिन किसी ईवेंट को खोलने और प्रदर्शित करने के तरीके पर कोई भी उदाहरण नहीं है। यह मेरा कोड अब तकएंड्रॉइड

public static void startCalendarMimeType(Context context, CalendarItem item){ 
    //all version of android 
    Intent i = new Intent(); 

    // mimeType will popup the chooser any for any implementing application (e.g. the built in calendar or applications such as "Business calendar" 
    i.setType("vnd.android.cursor.item/event"); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    // the time the event should start in millis. This example uses now as the start time and ends in 1 hour 
    //i.putExtra("beginTime", item.getBegin()); 
    //i.putExtra("endTime", item.getEnd()); 
    i.putExtra("_id", item.getId()); 


    // the action 
    //i.setAction(Intent.ACTION_PICK); 
    context.startActivity(i); 
} 

कैलेंडर आइटम पहले से ही कैलेंडर सामग्री समाधानकर्ता का उपयोग कर से लिया गया में जानकारी शामिल है। जब कोई उपयोगकर्ता मेरे आइटम पर क्लिक करता है तो मैं चाहता हूं कि वह आइटम प्रदर्शित करने वाले एंड्रॉइड कैलेंडर को खोलें।

इस बिंदु पर आप खोलने के लिए एक ऐप चुन सकते हैं, यदि आप "ईवेंट दिखाएं" चुनते हैं तो यह कैलेंडर ऐप खोलता है लेकिन एक नलपॉइंटर अपवाद प्राप्त करता है और मैं यह नहीं समझ सकता कि मैं यहां क्या कर रहा हूं। मैं सबसे पहले हूं जो ऐसा करने की कोशिश करता है?

किसी भी मदद की बहुत सराहना की

उत्तर

2

वहाँ कैसे उन "उदाहरण" का एंड्रॉयड

कोई नहीं में एक नया कैलेंडर ईवेंट बनाने के पर कई उदाहरण इस्तेमाल किया जाना चाहिए, कर रहे हैं क्योंकि वहां कोई दस्तावेज और एंड्रॉइड में कैलेंडर के लिए समर्थित एपीआई।

लेकिन कैसे

खोलने के लिए और प्रदर्शित करने के लिए एक घटना पर कोई भी आप जो कुछ भी तीसरे पक्ष के कैलेंडर प्रोग्राम के लेखकों आप के साथ एकीकृत और उनसे कैसे है कि एकीकरण करने के लिए कोशिश कर रहे हैं से संपर्क करने की आवश्यकता होगी । यदि आप कैलेंडर एप्लिकेशन के साथ एकीकृत करने का प्रयास कर रहे हैं जो एंड्रॉइड ओपन सोर्स प्रोजेक्ट का हिस्सा है, तो उस एप्लिकेशन के लिए कोई दस्तावेज और समर्थित एपीआई नहीं है।

Intent intent = new Intent(Intent.ACTION_VIEW); 
//Android 2.2+ 
intent.setData(Uri.parse("content://com.android.calendar/events/" + String.valueOf(calendarEventID))); 
//Android 2.1 and below. 
//intent.setData(Uri.parse("content://calendar/events/" + String.valueOf(calendarEventID)));  
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
     | Intent.FLAG_ACTIVITY_SINGLE_TOP 
     | Intent.FLAG_ACTIVITY_CLEAR_TOP 
     | Intent.FLAG_ACTIVITY_NO_HISTORY 
     | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
context.startActivity(intent); 

मुझे आशा है कि आप में से कुछ इस उपयोगी पाते हैं कि:

+0

सच है, लेकिन उपरोक्त उदाहरण संपादन ईवेंट के लिए काम करता है, लेकिन कुछ जब मैं सिर्फ एक आइटम देखना चाहता हूं तो एक नलपोइंटर कैसे देता है। यह किया जा सकता है, बस नहीं पता कि कैसे ... अभी तक। – Alex

11

मैं अंत में समाधान मिल गया। मुझे पता है अगर कोई किसी भी सवाल है या एक बेहतर तरीका एक ही कार्य को पूरा करने के लिए किया करते

/** 
* Add a calendar event. 
*/ 
private void addCalendarEvent(){ 
    Context context = getContext(); 
    Intent intent = new Intent(Intent.ACTION_EDIT); 
    intent.setType("vnd.android.cursor.item/event"); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
      | Intent.FLAG_ACTIVITY_SINGLE_TOP 
      | Intent.FLAG_ACTIVITY_CLEAR_TOP 
      | Intent.FLAG_ACTIVITY_NO_HISTORY 
      | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
    context.startActivity(intent); 
} 

/** 
* Edit a calendar event. 
*/ 
private void editCalendarEvent(){ 
    Context context = getContext(); 
    long calendarEventID = ..... 
    intent.setData(Uri.parse("content://com.android.calendar/events/" + String.valueOf(calendarEventID))); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
     | Intent.FLAG_ACTIVITY_SINGLE_TOP 
     | Intent.FLAG_ACTIVITY_CLEAR_TOP 
     | Intent.FLAG_ACTIVITY_NO_HISTORY 
     | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
    context.startActivity(intent); 
} 

:

मैं भी नीचे कुछ अन्य कैलेंडर उद्देश्य जोड़ लिया है।

+0

महान उत्तर आदमी। हालांकि, जब मैं किसी ईवेंट को देखने के लिए कोड चलाता हूं, तो मेरी तिथियां हमेशा दिसंबर 1 9 6 9 के रूप में वापस आती हैं। क्या आपको पता है कि इसका क्या कारण हो सकता है? –

+0

संपादित करने के लिए आप calendarEventID का उपयोग करते हैं, लेकिन आप –

+0

ईवेंट बनाते समय उस आईडी को कैसे प्राप्त नहीं करते हैं, क्योंकि 'FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET' को बहिष्कृत किया गया है, हम 'FLAG_ACTIVITY_NEW_DOCUMENT' रेफरी: https: //stackoverflow.com/a/33179077/2462531 का उपयोग कर सकते हैं –