Android O: PHONE_STATE प्रसारण सीमा




performance android-broadcast (4)

आखिरकार, एक्शन को " ACTION_PHONE_STATE_CHANGED ब्रॉडकास्ट एक्सेप्शन" लिस्ट में जोड़ा गया ताकि आप अपनी अभिव्यक्ति में ACTION_PHONE_STATE_CHANGED को जोड़ ACTION_PHONE_STATE_CHANGED और यह काम करेगा:

https://developer.android.com/guide/components/broadcast-exceptions

ACTION_CARRIER_CONFIG_CHANGED, TelephonyIntents.ACTION _ * _ SUBSCRIPTION_CHANGED, "TelephonyIntents.SECRET_CODE_CHION", ACTION_PHONE_STATE_CHANGED, ACTION_PHONE_ACCOUNT_RECOUNTGREEDGREEDGREEDGISED

ओईएम टेलीफोनी ऐप्स को ये प्रसारण प्राप्त करने की आवश्यकता हो सकती है।

मैं truecaller ऐप के समान कुछ करने की कोशिश कर रहा हूं, जहां मेरे ऐप को कॉल लटकाए जाने के बाद स्क्रीन दिखाना है। android.intent.action.PHONE_STATE को रजिस्टर फ़ाइल में प्रसारण प्रसारित करके इसे प्राप्त कर रहा था।

लेकिन यह काम नहीं कर रहा है अगर मैं एंड्रॉइड ओ प्रसारण सीमा के कारण एंड्रॉइड ओ को लक्षित करने के लिए ऐप को बदल देता हूं, और मैं इस उपयोग के मामले का एक वैकल्पिक समाधान निकालने की कोशिश कर रहा हूं।

एंड्रॉइड डॉक्स में सुझाए गए वैकल्पिक समाधान: Job scheduler या context साथ एक service पंजीकृत करें।

जॉब शेड्यूलर: Job scheduler ऑप्टिमाइजेशन के कारण कॉलबैक प्राप्त करने में कुछ देरी होगी। इसलिए यह उपयोगकर्ता के अनुभव को प्रभावित करेगा यदि हमारी ऐप स्क्रीन को फोन कॉल के बाद कुछ मिनट दिखाया जाता है और नए कॉल लॉग की जांच करने के लिए हर कुछ सेकंड में बैटरी ड्रेन समस्या होती है।

जावा में संदर्भ के साथ सेवा पंजीकृत करें : मैं चाहता हूं कि ऐप सक्रिय या जीवित नहीं है, भले ही वह काम करे। यदि सिस्टम Service को मारता है तो यह काम नहीं करेगा।

एक अग्रभूमि सेवा पंजीकृत करें : इसके लिए उपयोगकर्ता को हर समय दिखाया जाना चाहिए, जो उपयोगकर्ता को स्पैम होगा, और 24/7 एक सेवा चलाने के लिए बहुत सारे संसाधनों की खपत होती है जो प्रसारण सीमा के पूरे उद्देश्य को हरा देती है।

कृपया एक वैकल्पिक समाधान सुझाएं ताकि उपयोगकर्ता अनुभव समान रहे।

अग्रिम में धन्यवाद


आपके पास केवल एक समाधान है, एक अग्रभूमि सेवा का उपयोग करें और सेवा में प्रसारण रिसीवर को पंजीकृत करें।


जैसा कि यहाँ बताया गया है: https://issuetracker.google.com/37273064#comment4 , ACTION_PHONE_STATE_CHANGED (Android.intent.action.PHONE_STATE) Android O रिलीज़ के लिए श्वेतसूची में होगा। हालांकि उन्हें भविष्य में रिलीज़ में एक अलग तंत्र के साथ प्रतिस्थापित किया जा सकता है।


मेरे लिए, और मेरे प्रोडक्शन ऐप के लिए, समाधान 25 या उससे अधिक के लक्ष्यीकरण से बचने के लिए होगा, जब तक कि बेहतर वर्कअराउंड / एपीआई नहीं आएगा।

यदि आपका ऐप 24 या उससे नीचे के स्तर को लक्षित करता है, तो आप नई इम्प्लिमेंट ब्रॉडकास्ट लिमिटेशन से प्रभावित नहीं होते हैं और आपका ऐप तब भी PHONE_STATE प्रसारण सुन सकता है, जब आपका ऐप नहीं चल रहा हो।

निचले APIs को लक्षित करने वाला ऐप अभी भी सामान्य रूप से नए एंड्रॉइड संस्करणों पर डाउनलोड और इंस्टॉल किया जा सकता है, आपके sdkTarget मान को अपडेट करने का एकमात्र कारण यह है कि यदि आपके ऐप को नए APIs के उपयोग की आवश्यकता है।





android-8.0-oreo