मार्शमैलो आने के बाद एंड्रॉइड सिक्योरिटी लेवल को स्टिक, बट फॉर
SYSTEM_ALERT_WINDOW
आप फ़्लोटिंग एक्शन और कुछ भी दिखा सकते हैं। आप उपयोगकर्ता को इसके लिए अनुमति देने के लिए बाध्य कर सकते हैं। अपनी onCreate()
विधि में निम्नलिखित कोड्स के अनुसार इस कोड को सेट करें
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(myIntent);
}
कार्रवाई ACTION_MANAGE_OVERLAY_PERMISSION
सीधे 'अन्य एप्लिकेशन पर ड्रा' अनुमति स्क्रीन लॉन्च करती है।
संपादित करें: मेरा उपरोक्त कोड 100% सही काम करता है
लेकिन मैंने अभी पाया कि बहुत से लोग अभी भी खोज कर रहे हैं कि कैसे अनुमति दे सकते हैं ACTION_MANAGE_OVERLAY_PERMISSION
स्थायी रूप से जैसे कि यदि उपयोगकर्ता ने अनुमति दी है तो एक बार यह मत पूछिए कि वह हर बार आवेदन खोलते हैं तो आपके लिए समाधान सुनें-
जांचें कि डिवाइस में एपीआई 23+ है या नहीं
यदि 23+ एपीआई तब जांचें कि उपयोगकर्ता के पास परमिट है या नहीं
यदि परमिट था तो एक बार उसे ड्राइव न करें Settings.ACTION_MANAGE_OVERLAY_PERMISSION
और अगर अभी तक अनुमति नहीं दी है, तो रनटाइम अनुमति की जांच करें
अपनी onCreate()
विधि में नीचे पंक्ति रखें । इसके बाद इसे लगाएंsetContentView
checkPermission();
अब नीचे दिए गए कोड को डालें onActivityResult
@TargetApi(Build.VERSION_CODES.M)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) {
if (!Settings.canDrawOverlays(this)) {
checkPermission();
} else {
}
}
}
अब अंत में चेकपर्मिशन मेथड कोड
public void checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
}
}
}
और इस सार्वजनिक चर को अपनी कक्षा में घोषित करना न भूलें
public static int ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE = 5469;