मुझे कुछ विरासत कोड मिला है जिसे मैं मार्शमलो के लिए अनुमति सुरक्षित कर रहा हूं। PHONE_STATE अनुमति दी जाती है लेकिन फिर बाद में उपयोगकर्ता से इनकार किया तो जब वहाँ एक फोन कॉल वहाँ से संबंधित दुर्घटना एक अनुमति है हैएंड्रॉइड एम में प्रसारण रिसीवर के लिए अनुमति हटाने के साथ कैसे निपटें?
<receiver android:name="redacted.TheBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
:
एक प्रसारण के रूप में निम्नानुसार PHONE_STATE अनुमति का उपयोग कर रहा है। लेकिन क्रैश से पहले होता है ब्रॉडकास्ट रिसीवर के ऑनसेसिव() को कॉल किया जाता है (क्रैश एंड्रॉइड.एप.एक्टिविटी थ्रेड.handleReceiver में है)। इसका मतलब है कि प्रसारण रिसीवर को यह भी जांचने का मौका नहीं मिलता है कि अनुमति दी गई है या नहीं और उस स्थिति से निपटें।
तो मेरा सवाल यह है कि यदि कोई ब्रॉडकास्ट रिसीवर है, तो इस तरह कोड उस स्थिति से निपट सकता है जहां उपयोगकर्ता ने अनुमति को अक्षम कर दिया है क्योंकि AFAIK के पास अनुमतियों में बदलावों की निगरानी करने के लिए कोई एपीआई नहीं है, इसलिए वे कोड उस फ्लाई पर नहीं जान सकता है कि अनुमति रद्द कर दी गई है, और इसलिए यह अपने प्रसारण रिसीवर को अपमानित नहीं कर सकता है।
क्या इस मामले में एक क्रैश संवाद दिखाई देता है? या यह एक "मूक" स्टैक ट्रेस है, जो सिर्फ लॉगकैट में दिख रहा है लेकिन उपयोगकर्ता अनुभव को सीधे नुकसान नहीं पहुंचा रहा है? यदि उत्तरार्द्ध, शायद उत्तर केवल उन संदेशों के साथ रहने के लिए है, और यह देखने के लिए कि क्या आप अनुमति धारण करते हैं और रिसीवर की सक्षम स्थिति को टॉगल करने के लिए 'एप्लिकेशन' के 'ऑनक्रेट() 'जैसे कुछ में जांचने के लिए है। लेकिन यदि उपयोगकर्ता एक ठेठ क्रैश संवाद देखता है ... यह बुरा है। – CommonsWare
एक "दुर्भाग्यवश, XXX बंद हो गया है" संवाद है। – Gruntcakes
ओउओ ... यह एक बढ़िया मामला है कि मैं शर्त लगा रहा हूं कि उन्होंने नहीं सोचा था। कम से कम स्टॉपगैप के रूप में, आपको यह सुनिश्चित करने के लिए 'अलार्ममेनगर' या कुछ जांचने की आवश्यकता हो सकती है कि अनुमति और रिसीवर स्थिति समय-समय पर सिंक्रनाइज़ हो जाती है। इससे निरस्त अनुमति और अगली 'अलार्म प्रबंधक' चेक के बीच कॉल के लिए मदद नहीं मिलेगी, लेकिन यह कुछ भी नहीं है। – CommonsWare