91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 8.0完美適配全局dialog懸浮窗彈出的案例

發布時間:2021-02-08 10:22:23 來源:億速云 閱讀:380 作者:小新 欄目:移動開發

這篇文章主要介紹Android 8.0完美適配全局dialog懸浮窗彈出的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

前言

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

出現場景

有時候我們需要在App中彈dialog,但是卻不知道依附的是哪個Activity,這個時候通常會啟動一個service來依附,顯示一個全局的dialog。

Android 6.0出現的懸浮窗權限

為什么從6.0說起?

在Android6.0之后,使用懸浮窗功能需要申請開啟懸浮窗權限,在API23以下版本編譯,懸浮窗權限關閉的,但是沒有權限限制,在大于23版本編譯,這個權限默認是關閉的,需要獲取權限。而且每次使用的時候都要檢測并獲取權限,因為這個權限可以手動關閉。

在6.0之前就有的權限,默認在清單文件中注冊:

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

此權限在6.0之后不能彈出全局彈框。

6.0之后判斷是否有懸浮窗權限,沒有則申請權限

<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 {
   //若沒有權限,提示獲取.
   Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
   Toast.makeText(MainActivity.this,"需要取得權限以使用懸浮窗",Toast.LENGTH_SHORT).show();
   startActivity(intent);
  }
  
}else {
 //SDK在23以下,不用管.
 Intent intent = new Intent(MainActivity.this, MainService.class);
 startService(intent);
 finish();
}

Android 8.0對懸浮窗彈框優化

Android8.0 修訂記錄中的內容:

Android 8.0完美適配全局dialog懸浮窗彈出的案例
Android8.0懸浮窗權限加強.png

主要代碼

 //8.0系統加強后臺管理,禁止在其他應用和窗口彈提醒彈窗,如果要彈,必須使用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();

注意一點,這個在全局dialog顯示中才會出現,也就是說沒有具體的Activity依附,再者,顯示的dialog也需要加入theme,不然會報錯。

以上是“Android 8.0完美適配全局dialog懸浮窗彈出的案例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广饶县| 阜城县| 任丘市| 句容市| 英吉沙县| 华池县| 吐鲁番市| 大港区| 隆德县| 宁夏| 青冈县| 德惠市| 佛山市| 阳原县| 定日县| 辉县市| 西乌珠穆沁旗| 丽江市| 迭部县| 南丰县| 酒泉市| 铜鼓县| 梁山县| 雷州市| 颍上县| 阜阳市| 永州市| 仁化县| 防城港市| 珠海市| 枝江市| 阳谷县| 临朐县| 垫江县| 桂平市| 丰城市| 壶关县| 墨竹工卡县| 黄陵县| 黄浦区| 麟游县|