3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
在棉花糖來(lái)之后,Android讓安全級(jí)別更加堅(jiān)持,但是
SYSTEM_ALERT_WINDOW
你可以顯示浮動(dòng)動(dòng)作和任何你可以強(qiáng)制用戶給它的權(quán)限通過(guò)你的onCreate()
方法中的以下代碼將此代碼放在setContentView之后
// Check if Android M or higher if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Show alert dialog to the user saying a separate permission is needed // Launch the settings activity if the user prefers Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivity(myIntent); }
該操作ACTION_MANAGE_OVERLAY_PERMISSION
直接啟動(dòng)“繪制其他應(yīng)用程序”權(quán)限屏幕。
編輯:我的上面的代碼工作100%正確
但我發(fā)現(xiàn)很多人仍然在尋找ACTION_MANAGE_OVERLAY_PERMISSION
永久性的允許方式如果用戶已經(jīng)允許Permission Once那么每次打開(kāi)應(yīng)用程序時(shí)都不要問(wèn)它,所以請(qǐng)聽(tīng)你的解決方案 -
檢查設(shè)備是否具有API 23+
如果23+ API然后檢查用戶是否有許可
如果有許可,一旦不驅(qū)使他
Settings.ACTION_MANAGE_OVERLAY_PERMISSION
,如果還沒(méi)有許可,那么請(qǐng)求運(yùn)行時(shí)權(quán)限檢查
在你的onCreate()
方法中放在下面。把它放在后面setContentView
checkPermission();
現(xiàn)在把代碼放在下面 onActivityResult
@TargetApi(Build.VERSION_CODES.M)@Overrideprotected 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)) { // You don't have permission checkPermission(); } else { // Do as per your logic } }}
現(xiàn)在最后是checkPermission方法代碼
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;

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果應(yīng)用程序的目標(biāo)是API 22或更低版本,則Play Store會(huì)在用戶點(diǎn)擊安裝(顯示警報(bào))時(shí)提供SYSTEM_ALERT_WINDOW權(quán)限,即使其設(shè)備是Android 6.0,否則,如果應(yīng)用程序的目標(biāo)是API 23或更高版本,那么許可將被要求在運(yùn)行時(shí)授予。
- 3 回答
- 0 關(guān)注
- 1130 瀏覽
添加回答
舉報(bào)