मुझे एक एंड्रॉइड एप्लिकेशन मिला है जिसे पूरे दिन स्पोरैडिक रूप से जागृत करने की आवश्यकता है।मैं ब्रॉडकास्ट रिसीवर से डेटा को शुरू करने के माध्यम से डेटा कैसे पास करूं?
ऐसा करने के लिए, मैं एक लंबित इंटेन्टेंट सेट अप करने के लिए अलार्ममेनगर का उपयोग कर रहा हूं और यह ब्रॉडकास्ट रिसीवर को ट्रिगर करता है। यह ब्रॉडकास्ट रिसीवर फिर यूआई को अग्रभूमि में लाने के लिए एक गतिविधि शुरू करता है।
उपर्युक्त सभी काम करने लगते हैं, जिसमें गतिविधि स्वयं को सही तरीके से लॉन्च करती है; लेकिन मैं ब्रॉडकास्ट रिसीवर को गतिविधि को सूचित करने के लिए चाहता हूं कि यह अलार्म द्वारा शुरू किया गया था (जैसा कि उपयोगकर्ता द्वारा शुरू किया जा रहा है)। मेरे गतिविधि की onResume में
Intent i = new Intent(context, MyActivity.class);
i.putExtra(wakeupKey, true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
() विधि, मैं तो: BroadcastReceiver की विधि onReceive() से मैं कोशिश कर रहा हूँ इस, ऐसा करने के लिए इस प्रकार आशय का अतिरिक्त बंडल में एक चर सेट करने के लिए, इस बूलियन चर के अस्तित्व के लिए देखो:
protected void onResume() {
super.onResume();
String wakeupKey = "blah";
if (getIntent()!=null && getIntent().getExtras()!=null)
Log.d("app", "onResume at " + System.currentTimeMillis() + ":" + getIntent().getExtras().getBoolean(wakeupKey));
else
Log.d("app", "onResume at " + System.currentTimeMillis() + ": null");
}
onResume() हमेशा अशक्त रिटर्न में getIntent() getExtras() कॉल - मैं इस में सब पर के माध्यम से किसी भी अतिरिक्त पारित करने के लिए सक्षम होने के लिए नहीं है। बंडल।
यदि मैं ब्रॉडकास्ट रिसीवर को ट्रिगर करने वाले लंबित इंंटेंट को अतिरिक्त बाध्य करने के लिए एक ही विधि का उपयोग करता हूं, तो अतिरिक्त बस ठीक से आते हैं।
क्या कोई मुझे बता सकता है कि किसी ब्रॉडकास्ट रिसीवर से एक गतिविधि में बंडल को पार करने के विरोध में ब्रॉडकास्ट रिसीवर से एक गतिविधि में बंडल पास करने के बारे में क्या अलग है? मुझे डर है कि मैं यहां कुछ बहुत ही गलत गलत कर रहा हूं ...
क्युरियसर और कुरिओसेर ... यह सिर्फ (एमुलेटर में) काम करना शुरू किया, बिल्कुल के रूप में मैं उम्मीद थी । थोड़ी देर के लिए बार-बार काम किया। मैंने एमुलेटर को बंद कर दिया, फिर से शुरू किया (बिना कोड परिवर्तन या पुनर्मूल्यांकन के), और मैं पुराने व्यवहार पर वापस आ गया हूं (गतिविधि लॉन्च है लेकिन कोई बंडल पारित नहीं हुआ है)। मैं अभी भी दोनों रनों के लिए लॉग देख सकता हूं - पूर्व में, बंडल बाद में नहीं आ रहे हैं। –