android - Get variable from Broadcast Receiver -


मैं अपने main_activity से प्रसारण प्राप्तकर्ता में चर बूलीयन is_connected; मैं यह कैसे कर सकता हूँ?

  सार्वजनिक वर्ग MyStartServiceReceiver BroadcastReceiver का विस्तार करता है {बूलियन is_connected; मीडियाप्लेयर मीडिया; @Receive पर सार्वजनिक शून्य को ओवरराइड करें (संदर्भ संदर्भ, आशय का इरादा) {स्ट्रिंग कार्रवाई = आशय। गेट एक्शन (); अगर (action.equals (Intent.ACTION_POWER_CONNECTED)) {Toast.makeText (संदर्भ, "1", टोस्ट। एलएनजीएच_एलओजी)। दिखाएं (); } और अगर (action.equals (Intent.ACTION_POWER_DISCONNECTED)) {media = MediaPlayer.create (संदर्भ, R.raw.battery); media.start (); टोस्ट। मेक टेक्स्ट (संदर्भ, "2", टोस्ट। एलएनएनएचएच_ एलएफ़)। दिखाएं (); is_connected = झूठी; }}  

}

आपके पास दो विकल्प हैं एक, आप MyServiceStartReceiver को MyActivity में रख सकते हैं और वैरिएबल को MainActivity में एक क्लास चर के रूप में बना सकते हैं। (देखें कि मैंने उस रिसीवर को कैसे कार्यान्वित किया है जिसे नीचे अपना कस्टम इन्टेंट प्रसारण प्राप्त होगा)।

या आप अपने MyServiceStartReceiver को अलग रख सकते हैं, जिससे आप इसे अपने आवेदन में इस्तेमाल कर सकते हैं, और जब यह हो

STEPS

अपने MyServiceStartReceiver वर्ग में चर बनाते हैं

  सार्वजनिक स्थिर अंतिम स्ट्रिंग CONNECTED_KEY = "कनेक्ट";  

तब पर रिसेव () के अंत में जब आप अपनी गतिविधि को बुलियन के बारे में जानते हैं, तो यह जानने के लिए तैयार हैं कि बूलियन क्या है

  आशय प्रसारण = नया आशय (); broadcast.setAction (MainActivity.CONNECTION_BROADCAST_ACTION); Broadcast.putExtra (CONNECTED_KEY, is_connected); sendBroadcast (प्रसारण);  

मुख्य गतिविधि में, आप एक कस्टम प्रसारण रिसीवर बना सकते हैं। यह रिसीवर कुछ ऐसा हो सकता है

  सार्वजनिक वर्ग मुख्य गतिविधि गतिविधि को विस्तारित करती है {सार्वजनिक स्थिर अंतिम स्ट्रिंग कनेक्शन BNROADCAST_ACTION = "my.package.name.CONNECTION_BROADCAST"; संरक्षित बूलियन है कनेक्ट = गलत; निजी कनेक्शन्सस्टैटस रिसीवर स्टेटस रिसीवर; // आपकी मुख्य गतिविधि सामग्री आपके पास है और जोड़ें @ ओवरराइड सार्वजनिक शून्य पर आरम्भ () {super.onResume (); यदि (स्थिति रिसीवर == शून्य) स्थिति रिसीवर = नया कनेक्शनस्टैटस रिसीवर (); रजिस्टर रिसीवर (स्टेटस रीसीवर, नए इंटेन्टफिल्टर (CONNECTION_BROADCAST_ACTION)); } @ ओवरराइड पब्लिक वाइड ऑन पॉज़ () (सुपर)। unregisterReceiver (statusReceiver); } पब्लिक क्लास कनेक्शन स्टैटस रिसीवर ब्रॉडकास्ट रिसीवर का विस्तार करता है {/ / / / पर परित्याग विधि को ओवरराइड करता है और इसमें कनेक्ट किया गया है = intent.getBooleanExtra (BroadcastingClass.CONNECTED_KEY, गलत); // आप इसके साथ क्या करना चाहते हैं}}  

इसका परीक्षण नहीं किया है, लेकिन अगर आपको कोई समस्या है तो मुझे बताएं।


Comments