Android, उपयोगकर्ताओं को नुकसान पहुंचाने वाले ऐप्लिकेशन से बचाता है. साथ ही, भरोसेमंद यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराता है. गतिविधि की सुरक्षा से जुड़े फ़्रेमवर्क में, नियम और प्लैटफ़ॉर्म से जुड़ी पाबंदियां शामिल होती हैं. इन नियमों और पाबंदियों से, यूज़र इंटरफ़ेस (यूआई) में होने वाली अनचाही रुकावटों, टास्क हाइजैकिंग, और सुरक्षा से जुड़े अन्य खतरों को रोका जा सकता है. ये खतरे इस बात से जुड़े होते हैं कि ऐप्लिकेशन के कॉम्पोनेंट स्क्रीन पर कब और कैसे दिखते हैं. इस फ़्रेमवर्क का एक मुख्य कॉम्पोनेंट, बैकग्राउंड से गतिविधियों को शुरू करने पर पाबंदी लगाता है.
बैकग्राउंड से गतिविधि लॉन्च करने से जुड़ी पाबंदियां
बैकग्राउंड ऐक्टिविटी लॉन्च (बीएएल) तब होता है, जब फ़ोरग्राउंड में मौजूद न होने वाला कोई ऐप्लिकेशन, कोई नई गतिविधि शुरू करने की कोशिश करता है. इस ऐप्लिकेशन में कोई गतिविधि नहीं दिखती या इसे किसी दूसरे ऐप्लिकेशन से PendingIntent मिला होता है. यह बैकग्राउंड में गतिविधि शुरू करने की सुविधा (बीएएल) है.
हालांकि, इसके इस्तेमाल के कुछ सही उदाहरण भी हैं. जैसे, अलार्म क्लॉक ऐप्लिकेशन शुरू होने पर, बिना किसी पाबंदी के बीएल का इस्तेमाल किया जा सकता है. इससे उपयोगकर्ता अनुभव खराब होता है और सुरक्षा से जुड़ी समस्याएं पैदा होती हैं.
इन पर पाबंदी क्यों लगाई गई है?
Android 10 (एपीआई लेवल 29) के बाद से, प्लैटफ़ॉर्म ने इस बात पर पाबंदियां लगाई हैं कि ऐप्लिकेशन, बैकग्राउंड से गतिविधियां कब शुरू कर सकते हैं. इन सुरक्षा सुविधाओं से, ऐप्लिकेशन के गलत इस्तेमाल को रोकने में मदद मिलती है. साथ ही, उपयोगकर्ताओं को बेहतर अनुभव मिलता है. ऐसा इसलिए होता है, क्योंकि ये सुविधाएं गलत इस्तेमाल के सामान्य मामलों को कम करती हैं. जैसे:
- यूज़र इंटरफ़ेस (यूआई) हाइजैकिंग और पॉप-अप विज्ञापन: बैकग्राउंड में चल रहा कोई ऐप्लिकेशन, अचानक से उस ऐप्लिकेशन के ऊपर कोई गतिविधि (अक्सर विज्ञापन) लॉन्च कर देता है जिसका इस्तेमाल उपयोगकर्ता अभी कर रहा है. इससे उपयोगकर्ता का सेशन हाइजैक हो जाता है.
- फ़िशिंग और किसी और के नाम पर काम करना: बैकग्राउंड में चल रहा कोई ऐप्लिकेशन ऐसी गतिविधि शुरू करता है जो किसी दूसरे ऐप्लिकेशन की नकल करती है. उदाहरण के लिए, किसी असली ऐप्लिकेशन के लिए नकली लॉगिन स्क्रीन. ऐसा उपयोगकर्ता के क्रेडेंशियल चुराने के लिए किया जाता है. आम तौर पर, ऐसा "ऐक्टिविटी सैंडविच" अटैक के ज़रिए किया जाता है. इसमें नुकसान पहुंचाने वाली गतिविधि को किसी भरोसेमंद ऐप्लिकेशन के टास्क स्टैक में डाला जाता है.
- टैपजैकिंग: बैकग्राउंड में चल रहा कोई ऐप्लिकेशन, किसी दूसरे ऐप्लिकेशन के ऊपर पारदर्शी या धुंधली गतिविधि दिखाता है. ऐसा इसलिए किया जाता है, ताकि उपयोगकर्ता के टैप को इंटरसेप्ट किया जा सके और उसे अनचाही कार्रवाइयां करने के लिए गुमराह किया जा सके.
- ऐप्लिकेशन को चालू करना: एक ऐप्लिकेशन का बैकग्राउंड कॉम्पोनेंट, दूसरे ऐप्लिकेशन के फ़ोरग्राउंड कॉम्पोनेंट को चालू करता है, ताकि रोज़ाना सक्रिय उपयोगकर्ताओं की मेट्रिक को गैर-कानूनी तरीके से बढ़ाया जा सके.
फ़ोरग्राउंड सेवाएं (चालू टास्क के लिए)
अगर आपके ऐप्लिकेशन को बैकग्राउंड में लंबे समय तक चलने वाला कोई ऐसा टास्क पूरा करना है जिसके बारे में उपयोगकर्ता को जानकारी देना ज़रूरी है, तो आपको फ़ोरग्राउंड सेवा का इस्तेमाल करना चाहिए. जैसे, संगीत चलाना या कसरत को ट्रैक करना. फ़ोरग्राउंड सेवा को एक ऐसी सूचना दिखानी चाहिए जो हमेशा दिखती रहे और जिसे उपयोगकर्ता खारिज न कर सके. इस सूचना में इंटरैक्टिव कंट्रोल दिए जा सकते हैं. उदाहरण के लिए, किसी संगीत ऐप्लिकेशन के लिए चलाएं/रोकें बटन. इससे उपयोगकर्ता को जानकारी मिलती है और उसके पास कंट्रोल रहता है. साथ ही, उसे फ़ुल-स्क्रीन गतिविधि से कोई रुकावट नहीं आती.
इस क्रम का पालन करके, उपयोगकर्ताओं को बेहतर और ज़्यादा अनुमानित अनुभव दिया जा सकता है. इसके लिए, स्टैंडर्ड सूचनाओं से शुरुआत करें और सिर्फ़ ज़रूरी होने पर ही ज़्यादा दखल देने वाले विकल्पों का इस्तेमाल करें.
बैकग्राउंड में गतिविधि शुरू होने की अनुमति कब दी जाती है (अपवाद)
अगर इनमें से कोई एक शर्त पूरी होती है, तो कोई ऐप्लिकेशन बैकग्राउंड में गतिविधि शुरू कर सकता है:
- ऐप्लिकेशन की कोई विंडो दिख रही हो, जैसे कि फ़ोरग्राउंड में कोई गतिविधि.
- ऐप्लिकेशन, मौजूदा इनपुट मेथड एडिटर (IME) है.
- गतिविधि, सिस्टम से भेजे गए
PendingIntentसे शुरू की गई है. उदाहरण के लिए, सूचना पर टैप करके. - उपयोगकर्ता ने ऐप्लिकेशन को
SYSTEM_ALERT_WINDOWकी अनुमति दी हो. - ऐप्लिकेशन को
START_ACTIVITIES_FROM_BACKGROUNDकी अनुमति दी गई हो. - ऐप्लिकेशन, ऐसी सेवा से जुड़ा हो जिसे बैकग्राउंड में गतिविधियां शुरू करने की अनुमति मिली हो.
- ऐप्लिकेशन को डिवाइस के लॉन्चर ऐप्लिकेशन से लॉन्च किया जाता है. जैसे, जब कोई उपयोगकर्ता किसी ऐप्लिकेशन के आइकॉन पर टैप करता है या किसी विजेट से इंटरैक्ट करता है.
- लॉन्च, ऑपरेटिंग सिस्टम के मुख्य हिस्से से होता है, जिसे हर समय चालू रहना चाहिए. जैसे, टेलीफ़ोनी सेवा, इनकमिंग कॉल की स्क्रीन शुरू करती है.
सुरक्षा को बेहतर बनाने के लिए नई सुविधाएं और ज़रूरी ऑप्ट-इन
सुरक्षा को और बेहतर बनाने के लिए, Android ने ज़्यादा सख्त नियम लागू किए हैं. इनके मुताबिक, PendingIntent और IntentSender का इस्तेमाल करके गतिविधियां लॉन्च करने वाले ऐप्लिकेशन के लिए, उपयोगकर्ताओं को साफ़ तौर पर ऑप्ट-इन करना होगा. लॉन्च करने की अनुमति सिर्फ़ तब मिलती है, जब PendingIntent बनाने वाला ऐप्लिकेशन या उसे भेजने वाला ऐप्लिकेशन, बैकग्राउंड में लॉन्च करने के अपने खास अधिकारों को अनुमति देने के लिए ऑप्ट-इन करता है.
ज़्यादातर मामलों में, PendingIntent भेजने वाले ऐप्लिकेशन को ऑप्ट-इन करना चाहिए. ऐसा इसलिए, क्योंकि आम तौर पर उपयोगकर्ता सीधे तौर पर इसी ऐप्लिकेशन के साथ इंटरैक्ट करता है. उदाहरण के लिए, किसी बटन पर टैप करना.
भेजने वालों को PendingIntent के लिए ऑप्ट-इन करना होगा
जब आपका ऐप्लिकेशन, Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करता है, तब PendingIntent भेजते समय, उसे डिफ़ॉल्ट रूप से BAL के विशेषाधिकार नहीं मिलते. अगर आपने साफ़ तौर पर ऑप्ट-इन नहीं किया है, तो गतिविधि लॉन्च ब्लॉक की जा सकती है. हालांकि, ऐसा तब तक नहीं होगा, जब तक PendingIntent के क्रिएटर ने पहले से ही अपने विशेषाधिकार नहीं दिए हों.
लॉन्च को पूरा करने के लिए, भेजने वाले को ActivityOptions.setPendingIntentBackgroundActivityStartMode() को कॉल करके, अपने खास अधिकार देने के लिए ऑप्ट-इन करना चाहिए. साथ ही, सुझाया गया मोड ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE है. इसे SDK 36 में जोड़ा गया है.
यह ज़्यादा सुरक्षित मोड है. यह अनुमति सिर्फ़ तब मिलती है, जब PendingIntent भेजने वाला ऐप्लिकेशन स्क्रीन पर दिख रहा हो. इससे यह पक्का होता है कि गतिविधि लॉन्च होने की वजह, सीधे तौर पर आपके ऐप्लिकेशन के साथ उपयोगकर्ता का इंटरैक्शन है.
अनुमतियां देने के लिए, ActivityOptions.setPendingIntentBackgroundActivityStartMode() का इस्तेमाल करें.
// Sender Side
ActivityOptions options = ActivityOptions.makeBasic()
.setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE);
try {
myPendingIntent.send(options.toBundle());
} catch (PendingIntent.CanceledException e) {
Log.e(TAG, "The PendingIntent was canceled", e);
}
// Sender Side
val options = ActivityOptions.makeBasic().apply {
pendingIntentBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE
}
try {
myPendingIntent.send(options.toBundle())
} catch (e: PendingIntent.CanceledException) {
Log.e(TAG, "The PendingIntent was canceled", e)
}
क्रिएटर्स को PendingIntent के लिए ऑप्ट-इन करना होगा
अगर आपका ऐप्लिकेशन, Android 15 (एपीआई लेवल 35) या इसके बाद के वर्शन को टारगेट करता है, तो PendingIntent बनाने वाले ऐप्लिकेशन को डिफ़ॉल्ट रूप से, बैकग्राउंड में लॉन्च करने के विशेषाधिकार नहीं मिलते. भेजने वाले को अपने ऐप्लिकेशन के बीएलए के फ़ायदे इस्तेमाल करने की अनुमति देने के लिए, आपको साफ़ तौर पर ऑप्ट-इन करना होगा.
अनुमतियां देने के लिए, ActivityOptions.setPendingIntentCreatorBackgroundActivityStartMode() का इस्तेमाल करें.
// Creator Side
Intent intent = new Intent(context, MyActivity.class);
ActivityOptions options = ActivityOptions.makeBasic().setPendingIntentCreatorBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
PendingIntent pendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE, options.toBundle());
// Creator Side
val intent = Intent(context, MyActivity::class.java)
val options = ActivityOptions.makeBasic().apply {
pendingIntentCreatorBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
}
val pendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, intent,
PendingIntent.FLAG_IMMUTABLE, options.toBundle())
IntentSender का इस्तेमाल करके लॉन्च करना
IntentSender का इस्तेमाल करके गतिविधियां लॉन्च करते समय भी, BAL से जुड़ी पाबंदियां लागू होती हैं. IntentSender को PendingIntent.getIntentSender के ज़रिए हासिल किया जाता है. इसलिए, इस पर भी ऑप्ट-इन करने से जुड़ी ज़रूरी शर्तें लागू होती हैं.
- Android 14 (एपीआई 34) से, Context.startIntentSender() का इस्तेमाल करने के लिए, भेजने वाले पक्ष को ऑप्ट-इन करना होगा. आपको यहां भी
ActivityOptionsबंडल देना होगा.
ActivityOptions options = ActivityOptions.makeBasic()
.setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
context.startIntentSender(myIntentSender, fillInIntent, flagsMask,
flagsValues, extraFlags, options.toBundle());
val options = ActivityOptions.makeBasic().apply {
pendingIntentBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
}
context.startIntentSender(myIntentSender, fillInIntent, flagsMask,
flagsValues, extraFlags, options.toBundle())
- Android 17 (एपीआई 37+) से, IntentSender.sendIntent() का इस्तेमाल करने के लिए, भेजने वाले ऐप्लिकेशन को ऑप्ट-इन करना होगा.
ActivityOptions options = ActivityOptions.makeBasic()
.setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
myIntentSender.sendIntent(context, code, intent, onFinished, handler,
requiredPermission, options.toBundle());
val options = ActivityOptions.makeBasic().apply {
pendingIntentBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
}
myIntentSender.sendIntent(context, code, intent, onFinished, handler,
requiredPermission, options.toBundle())
- ActivityResultLauncher<IntentSenderRequest> का इस्तेमाल करना: यह AndroidX API, Context.startIntentSender()internally का इस्तेमाल करता है. इसलिए, इस पर बीएल की पाबंदियों का असर पड़ता है.
सीक्वेंस डायग्राम: बीएल की पाबंदियां
इस डायग्राम में, PendingIntent का इस्तेमाल करके किसी गतिविधि को सुरक्षित तरीके से लॉन्च करने की प्रोसेस दिखाई गई है. सर्टिफ़िकेट का सही तरीके से इस्तेमाल करने के लिए, अनुमति देने वाले ऐप्लिकेशन की एक मान्य चेन होना ज़रूरी है. इसमें शामिल कम से कम एक ऐप्लिकेशन, अनुमति देने के साथ-साथ बैकग्राउंड से कोई गतिविधि शुरू करने की सुविधा देता हो
- क्रिएट करना और असाइन करना (ऐप्लिकेशन A - क्रिएटर)
- Creator ऐप्लिकेशन,
PendingIntentबनाता है - अगर एसडीके 35 या इससे ऊपर के वर्शन को टारगेट किया जा रहा है, तो क्रिएटर को setPendingIntentCreatorBackgroundActivityStartMode() का इस्तेमाल करके, बीएलए के खास अधिकारों को साफ़ तौर पर सौंपना होगा. ऐसा तब करना होगा, जब उसे अपने खास अधिकारों का इस्तेमाल करना हो. डिफ़ॉल्ट रूप से, कोई भी खास अधिकार नहीं दिया जाता है.
- इसके बाद,
PendingIntentको किसी दूसरे ऐप्लिकेशन (ऐप्लिकेशन B) पर डिलीवर किया जाता है
- Creator ऐप्लिकेशन,
- लॉन्च करना और योगदान देना (ऐप्लिकेशन B - भेजने वाला)
- बाद में, Sender ऐप्लिकेशन
PendingIntent.send()को कॉल करके लॉन्च करने की प्रोसेस शुरू करता है. - अगर एसडीके 34 या इसके बाद के वर्शन को टारगेट किया जा रहा है, तो भेजने वाले को setPendingIntentBackgroundActivityStartMode() का इस्तेमाल करके, अपने खास अधिकारों को साफ़ तौर पर शेयर करना होगा. ऐसा तब करना होगा, जब उसे अपने खास अधिकारों का इस्तेमाल करना हो. डिफ़ॉल्ट रूप से, कोई भी खास अधिकार नहीं दिया जाता है.
- बाद में, Sender ऐप्लिकेशन
- Android System Security Validation
- Android सिस्टम, ऐप्लिकेशन लॉन्च करने के अनुरोध को इंटरसेप्ट करता है और सुरक्षा जांच करता है.
- यह दो शर्तों का आकलन करता है:
- क्या क्रिएटर ने अपने विशेषाधिकार सौंपे हैं? साथ ही, क्या क्रिएटर ऐप्लिकेशन फ़िलहाल बीएएल के सामान्य अपवादों में से किसी एक को पूरा करता है?
- क्या भेजने वाले ने अपने विशेषाधिकारों का योगदान दिया है, और क्या भेजने वाला ऐप्लिकेशन फ़िलहाल बीएएल के सामान्य अपवादों में से किसी एक को पूरा करता है?
- नतीजा
- अनुमति है: अगर तीसरे चरण में दी गई दो शर्तों में से कम से कम एक पूरी होती है, तो विशेषाधिकार चेन की पुष्टि की जाती है. Android सिस्टम, टारगेट ऐक्टिविटी शुरू करता है. साथ ही, भेजने वाले को अनुरोध पूरा होने की सूचना मिलती है.
- ब्लॉक किया गया: अगर दोनों शर्तें पूरी नहीं होती हैं, तो सिस्टम लॉन्च को ब्लॉक कर देता है. भेजने वाले ऐप्लिकेशन को, सीधे तौर पर कोई रिटर्न वैल्यू या अपवाद नहीं मिलता है. इससे यह पता चलता है कि अनुरोध पूरा नहीं किया जा सका. इसके बजाय, Android सिस्टम Logcat में "बैकग्राउंड में गतिविधि लॉन्च करने पर रोक लगा दी गई है!" मैसेज को इंटरनल तौर पर लॉग करता है. डेवलपर को डीबग करने के लिए, इस मैसेज की जांच करनी चाहिए.
टास्क हाइजैक होने से रोकना
टास्क के दौरान हाइजैकिंग के हमलों (जैसे कि "ऐक्टिविटी सैंडविच") को रोकने के लिए, Android 15 में एपीआई लेवल 37 या इसके बाद के लेवल को टारगेट करने वाले ऐप्लिकेशन के लिए नए नियम लागू किए गए हैं.
- पहला नियम: किसी टास्क में, कोई गतिविधि सिर्फ़ उसी ऐप्लिकेशन की दूसरी गतिविधि से लॉन्च की जा सकती है जिसका यूआईडी, टास्क में सबसे ऊपर मौजूद गतिविधि के यूआईडी के बराबर हो.
- दूसरा नियम: सिर्फ़ फ़ोरग्राउंड टास्क में मौजूद ऐसी गतिविधि को नया टास्क बनाने या किसी दूसरे, मौजूदा टास्क को फ़ोरग्राउंड में लाने की अनुमति है जिसका यूआईडी, सबसे ऊपर मौजूद गतिविधि के यूआईडी से मेल खाता हो.
टास्क के दौरान सुरक्षा से जुड़ी सुविधाओं के लिए डेवलपर का ऑप्ट-इन करना
इस सुविधा को टारगेट एसडीके 37 से चालू किया जा सकता है. इसे चालू करने के लिए, आपको साफ़ तौर पर ऑप्ट-इन करना होगा. इसे इन-टास्क हाइजैकिंग (या ऐक्टिविटी सैंडविचिंग) को रोकने के लिए डिज़ाइन किया गया है. इसमें कोई दुर्भावनापूर्ण ऐप्लिकेशन, आपके ऐप्लिकेशन के टास्क में ऐक्टिविटी लॉन्च कर सकता है, ताकि वह आपके ऐप्लिकेशन के नाम पर काम कर सके और उपयोगकर्ता का डेटा चुरा सके.
सुरक्षा की सेटिंग चालू करना
अपने ऐप्लिकेशन के लिए, एएसएम में ऑप्ट-इन करने और इसे चालू करने के लिए, अपनी AndroidManifest.xml फ़ाइल में android:allowCrossUidActivitySwitchFromBelow एट्रिब्यूट को false पर सेट करें. यह ऐप्लिकेशन-लेवल की सेटिंग है. यह आपके ऐप्लिकेशन में होने वाली सभी गतिविधियों को डिफ़ॉल्ट रूप से सुरक्षित रखती है.
कुछ गतिविधियों के लिए अपवाद बनाना
अगर आपने इसे अपने ऐप्लिकेशन के लिए चालू किया है, लेकिन आपको किसी खास और भरोसेमंद गतिविधि को अन्य ऐप्लिकेशन से लॉन्च करने की अनुमति देनी है, तो टारगेट किया गया अपवाद बनाया जा सकता है. किसी एक गतिविधि को इस सुरक्षा से बाहर रखने के लिए, उस गतिविधि के setAllowCrossUidActivitySwitchFromBelow(true) तरीके में setAllowCrossUidActivitySwitchFromBelow(true) को कॉल करें.onCreate() इससे सिर्फ़ एक गतिविधि को लॉन्च किया जा सकता है. वहीं, आपके ऐप्लिकेशन के बाकी हिस्से को सुरक्षित रखा जाता है.
समस्या का हल
रेगुलर एक्सप्रेशन का इस्तेमाल करके, काम के मैसेज ढूंढने के लिए Logcat को फ़िल्टर करें. टैग
ActivityTaskManager का इस्तेमाल अक्सर किया जाता है. साथ ही, ActivityTaskManager के हिसाब से फ़िल्टर करने पर, लॉग को अलग किया जा सकता है.
मुख्य लॉग मैसेज के बारे में जानकारी
लॉन्च नहीं हो सका (गड़बड़ी): इस मैसेज से पता चलता है कि गतिविधि शुरू नहीं हो सकी.
- मतलब: गतिविधि शुरू करने का अनुरोध अस्वीकार कर दिया गया है, क्योंकि ज़रूरी PendingIntent ऑप्ट-इन, भेजने वाले (SDK 34 या इसके बाद के वर्शन को टारगेट करने वाला) या क्रिएटर (SDK 35 या इसके बाद के वर्शन को टारगेट करने वाला) के पास मौजूद नहीं था.
- कार्रवाई: आपको अपने कोड को अपडेट करना होगा, ताकि उसमें सही ActivityOptions ऑप्ट-इन शामिल हो.
लॉग का विश्लेषण करते समय, इन फ़ील्ड की जांच करें:
- realCallingPackage: वह ऐप्लिकेशन जिसने PendingIntent भेजा है. यह भेजने वाला है.
- callingPackage: वह ऐप्लिकेशन जिसने PendingIntent बनाया है. यह क्रिएटर है.
स्ट्रिक्ट मोड
Android 16 से, ऐप्लिकेशन डेवलपर के पास स्ट्रिक्ट मोड चालू करने का विकल्प होता है. इससे उसे यह सूचना मिलती है कि किसी गतिविधि को लॉन्च करने पर रोक लगा दी गई है. इसके अलावा, उसे यह भी पता चलता है कि ऐप्लिकेशन के टारगेट एसडीके को अपग्रेड करने पर, किसी गतिविधि को लॉन्च करने पर रोक लगाई जा सकती है.
ऐप्लिकेशन, ऐक्टिविटी या अन्य ऐप्लिकेशन कॉम्पोनेंट के Application.onCreate() तरीके में, जल्द से जल्द इसे चालू करने के लिए कोड का उदाहरण:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectBlockedBackgroundActivityLaunch()
.penaltyLog()
.build());
)
}