सेवा या बूट पूरे
वास्तव में, यदि आप एक Service
लागू करने या कुछ उदाहरण android.intent.action.BOOT_COMPLETED
रजिस्टर की जरूरत नहीं है अनिवार्य नहीं है कैसे रजिस्टर करने के लिए पता चलता/एक BroadcastReceiver
अपंजीकृत जब गतिविधि बनाई जाती है और नष्ट हो जाती है। हालांकि, यह उन उद्देश्यों के लिए उपयोगी है जो आप केवल तब ही उम्मीद करते हैं जब ऐप खोला जाता है (उदाहरण के लिए सेवा/गतिविधि के बीच आंतरिक संचार के लिए)।
हालांकि, एसएमएस के मामले में, आप हर समय इरादे को सुनना चाहते हैं (और न केवल जब आप ऐप खोले जाते हैं)।
एक और तरीका
आप एक class
जो BroadcastReceiver
फैली बना सकते हैं और AndroidManifest.xml
के माध्यम से वांछित उद्देश्य के लिए रजिस्टर कर सकते हैं नहीं है। इस तरह, BroadcastReceiver
अपनी गतिविधि से indepedent हो जाएगा (और गतिविधि के जीवन चक्र से निर्भर नहीं होगा)
इस तरह, आपके BroadcastReceiver
रूप में जल्द ही होगा कि आपके ऐप बंद कर दिया है एक एसएमएस भी आते ही एंड्रॉयड द्वारा स्वचालित रूप से सूचित किया जाएगा।
AndroidManifest।एक्सएमएल
<?xml version="1.0" encoding="utf-8"?>
<manifest>
...
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application>
....
<receiver android:name=".MyCustomBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
</manifest>
MyCustomBroadcastReceiver.java
public class MyCustomBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent != null) {
String action = intent.getAction();
if(action != null) {
if(action.equals("android.provider.Telephony.SMS_RECEIVED")) {
// DO YOUR STUFF
} else if (action.equals("ANOTHER ACTION")) {
// DO ANOTHER STUFF
}
}
}
}
}
नोट्स
आप AndroidManifest करने के लिए दूसरों के इरादे-फिल्टर जोड़ सकते हैं और एक ही BroadcastReceiver
में उन सभी को संभाल कर सकते हैं।
केवल एक सेवा शुरू करें यदि आप एक लंबा कार्य करेंगे। आपको बस एक अधिसूचना प्रदर्शित करने या कुछ डेटाबेस अपडेट करने की आवश्यकता है, बस ऊपर दिए गए कोड का उपयोग करें।
आप यह भी सुनिश्चित करना चाहते हैं कि आपके पास काम करने के लिए आपकी ऐप मेनिफेस्ट फ़ाइल में परिभाषित 'RECEIVE_BOOT_COMPLETED' अनुमति है। –
क्या यह कार्य करता है यदि अनुप्रयोग संदर्भ किसी प्रोजेक्ट लाइब्रेरी से किसी अन्य को विस्तारित कर रहा है? – Maxrunner
धन्यवाद जावनेटर (रोहित), मेरी मदद (रवि-सीआईपीएल और मलेशिया) – DynamicMind