欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 8.0如何完美適配全局dialog懸浮窗彈出

 更新時(shí)間:2018年07月26日 08:29:22   作者:會(huì)撒嬌的犀犀利  
這篇文章主要給大家介紹了關(guān)于Android 8.0如何完美適配全局dialog懸浮窗彈出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧

前言

最近項(xiàng)目targetSdkVersion升級(jí)到了26,出現(xiàn)很多問題趟了很多坑,其中就包括本篇的需要解決的問題:全局dialog 不顯示。

出現(xiàn)場景

有時(shí)候我們需要在App中彈dialog,但是卻不知道依附的是哪個(gè)Activity,這個(gè)時(shí)候通常會(huì)啟動(dòng)一個(gè)service來依附,顯示一個(gè)全局的dialog。

Android 6.0出現(xiàn)的懸浮窗權(quán)限

為什么從6.0說起?

在Android6.0之后,使用懸浮窗功能需要申請(qǐng)開啟懸浮窗權(quán)限,在API23以下版本編譯,懸浮窗權(quán)限關(guān)閉的,但是沒有權(quán)限限制,在大于23版本編譯,這個(gè)權(quán)限默認(rèn)是關(guān)閉的,需要獲取權(quán)限。而且每次使用的時(shí)候都要檢測并獲取權(quán)限,因?yàn)檫@個(gè)權(quán)限可以手動(dòng)關(guān)閉。

在6.0之前就有的權(quán)限,默認(rèn)在清單文件中注冊(cè):

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

此權(quán)限在6.0之后不能彈出全局彈框。

6.0之后判斷是否有懸浮窗權(quán)限,沒有則申請(qǐng)權(quán)限

<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  if (Settings.canDrawOverlays(MainActivity.this)) {
   Intent intent = new Intent(MainActivity.this, MainService.class);
   startService(intent);
   finish();
  } else {
   //若沒有權(quán)限,提示獲取.
   Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
   Toast.makeText(MainActivity.this,"需要取得權(quán)限以使用懸浮窗",Toast.LENGTH_SHORT).show();
   startActivity(intent);
  }
  
}else {
 //SDK在23以下,不用管.
 Intent intent = new Intent(MainActivity.this, MainService.class);
 startService(intent);
 finish();
}

Android 8.0對(duì)懸浮窗彈框優(yōu)化

Android8.0 修訂記錄中的內(nèi)容:


Android8.0懸浮窗權(quán)限加強(qiáng).png

主要代碼

 //8.0系統(tǒng)加強(qiáng)后臺(tái)管理,禁止在其他應(yīng)用和窗口彈提醒彈窗,如果要彈,必須使用TYPE_APPLICATION_OVERLAY
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
 dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY));
}else {
 dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
}
dialog.show();

注意一點(diǎn),這個(gè)在全局dialog顯示中才會(huì)出現(xiàn),也就是說沒有具體的Activity依附,再者,顯示的dialog也需要加入theme,不然會(huì)報(bào)錯(cuò)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論