2010-09-16 8 views
13

खो गया डेटा मैं अलार्ममेनगर और ब्रॉडकास्ट रिसीवर क्लास (AREceiver.java नामक) के उपयोग के माध्यम से अपने कार्यक्रम में कुछ बुनियादी अलार्म कार्यक्षमता जोड़ रहा हूं। मेरी समस्या यह है कि लंबित इंटेन्टेंट बनाने के इरादे से जुड़े बंडल में जो डेटा जोड़ता है वह खो जाता प्रतीत होता है। एकमात्र बंडल डेटा जिसे मैं एआरसीवर क्लास में एक्सेस कर सकता हूं वह एक android.intent.extra.ALARM_COUNT = 1 है।एक ब्रॉडकास्ट रिसीवर को लंबित इंंटेंट के साथ बंडल भेजने में समस्या,

यहाँ मुख्य गतिविधि कक्षा में बुनियादी कोड आशय बनाने है, PendingIntent और AlarmManager: [मुख्य गतिविधि में कोड - Notepadv3]

Intent intent = new Intent(Notepadv3.this, AReceiver.class);   
intent.putExtra("teststring","hello, passed string in Extra");    
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);  
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);   
am.set(AlarmManager.RTC_WAKEUP, timeOfNextPeriod.getTimeInMillis(), alarmIntent); 

[BroadcastReceiver में कोड - AReceiver]

public void onReceive(Context con, Intent arg1) { 
Bundle extrasBundle = arg1.getExtras(); 
Log.d("broadcast","contains teststring = " + extrasBundle.containsKey("teststring")); 
Log.d("broadcast","is empty? = " + extrasBundle.isEmpty()); 
Log.d("broadcast","to string = " + extrasBundle.toString()); 
    } 

डीबग संदेशों का कहना है कि टेस्टस्ट्रिंग गलत है, खाली है गलत है और पूरे बंडल को आउटपुट करते समय, मुझे android.intent.extra.ALARM_COUNT = 1 मान मिलता है।

किसी भी मदद की सराहना की जाएगी।

चीयर्स, टॉम

उत्तर

33

आप इस लाइन

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0); 

इस

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

अन्यथा डेटा खो दिया है

+0

धन्यवाद में बदलना होगा! यह ठीक था, मैंने सही पैरामीटर प्राप्त करने के लिए उच्च और निम्न खोज की थी। एक बार फिर धन्यवाद। –

+0

अजीब, एंड्रॉइड 4.0.3 एमुलेटर पर यह 0 और लंबित इंटेंटेंट के साथ काम करता है। FLAG_UPDATE_CURRENT – max4ever

+2

लेकिन जब आप बाद वाले करते हैं, तो यह किसी भी * मौजूदा * अतिरिक्त ओवरवर्ट करता है। मतलब अगर हम नए अतिरिक्त जोड़ना चाहते हैं और मौजूदा को बनाए रखना चाहते हैं, तो यह काम नहीं करता है। आम तौर पर झंडे के रूप में 0 गुजरने से यह काम होता है (उदाहरण के लिए अगर अलार्ममैनेजर के साथ शेड्यूल करने के बजाय लंबित इन्टेंट पर कॉल करना)। क्या देता है? – Michael

संबंधित मुद्दे