6

मैं एक एंड्रॉइड एप्लिकेशन विकसित करता हूं जो कैलेंडर एप्लिकेशन को ईवेंट संपादित करने के लिए संकेत देता है।एंड्रॉइड कैलेंडर: onActivityResult का परिणाम कोड हमेशा 0

मैं कैलेंडर खोलने के लिए startActivityForResult() का उपयोग करता हूं। ईवेंट को संपादित करने और सहेजने के बाद, resultCodeonActivityResult() के अंदर हमेशा 0 है।

मैंने "एक्टिविटी रिजल्ट परिणाम कोड हमेशा संबंधित 0" से संबंधित कई उत्तरों को देखा। यह दूसरी गतिविधि में setResult() और finish() का उपयोग न करने की वजह से है।

लेकिन मेरे मामले में, मैं एंड्रॉइड कैलेंडर एप्लिकेशन (कस्टम गतिविधि नहीं) कह रहा हूं।

एंड्रॉयड कैलेंडर संकेत करने के लिए कोड:

Intent intent = new Intent(Intent.ACTION_EDIT); 
intent.setType("vnd.android.cursor.item/event"); 
//set the event details 
startActivityForResult(intent,1); 

जब कैलेंडर बचाया या

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //resultCode always returns 0. 
    switch(requestCode) { 
    case 1: 
     if (resultCode == Activity.RESULT_OK) 
     { 

     } 
    } 
} 

रद्द कर दिया गया है या नहीं मैं क्लिक करें "सहेजें" या "रद्द करें" कैलेंडर अनुप्रयोग में गति प्रदान करने के लिए, resultCode हमेशा 0.

अतिरिक्त रूप से मुझे कैलेंडर इरादे से डेटा वापस प्राप्त करने की आवश्यकता है। लेकिन AtctivityResult में "डेटा" का इरादा भी शून्य हो जाता है।

क्या कोई यह समझा सकता है कि ऐसा क्यों होता है? क्या यह जानने का कोई तरीका है कि उपयोगकर्ता "सहेजें" या "रद्द करें" पर क्लिक करता है या नहीं?

+1

कैलेंडर एक मूल्य के वापस जाने के लिए तैयार किया गया है? यदि नहीं, तो यह हमेशा 0 – TomTsagk

+0

लौटाएगा मुझे नहीं लगता कि एंड्रॉइड (Google) कैलेंडर कोई परिणाम देगा, कम से कम यह [कैलेंडर प्रदाता] में निर्दिष्ट नहीं है (http://developer.android.com/guide/topics/ प्रदाताओं/कैलेंडर-provider.html)। –

+0

यदि ऐसा है, तो एंड्रॉइड कैलेंडर प्रदाता यह जानने के लिए कोई तरीका प्रदान करता है कि क्या उपयोगकर्ता कैलेंडर को सहेजता है या रद्द करता है? – Sam35

उत्तर

0

आप नए जोड़े गए कैलेंडर ईवेंट का lastId के लिए जाँच कर सकते हैं, अगर यह नहीं बदला है, तो परिणाम वास्तव में रद्द कर दिया है, अन्यथा यह ठीक है

val projection = arrayOf(CalendarContract.Calendars._ID) 
cursor = contentResolver.query(CalendarContract.Events.CONTENT_URI, projection, null, null, null) 
if (cursor.moveToLast()) { 
    val lastId = cursor.getLong(0) 
    // compare lastId with a previous one, if not changed - result is CANCELLED 
} 
संबंधित मुद्दे