内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Android8.0完美適配全局dialog懸浮窗彈出的案例-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,東洲企業(yè)網(wǎng)站建設,東洲品牌網(wǎng)站建設,網(wǎng)站定制,東洲網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,東洲網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

前言

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

出現(xiàn)場景

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

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

為什么從6.0說起?

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

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

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

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

6.0之后判斷是否有懸浮窗權(quán)限,沒有則申請權(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對懸浮窗彈框優(yōu)化

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

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

主要代碼

 //8.0系統(tǒ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();

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

以上是“Android 8.0完美適配全局dialog懸浮窗彈出的案例”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:Android8.0完美適配全局dialog懸浮窗彈出的案例-創(chuàng)新互聯(lián)
文章來源:http://www.rwnh.cn/article22/dcpecc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、品牌網(wǎng)站制作電子商務、網(wǎng)站策劃、關鍵詞優(yōu)化網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
渝北区| 平罗县| 文山县| 于都县| 正蓝旗| 台东县| 台江县| 仲巴县| 临沭县| 蒙阴县| 安西县| 余庆县| 长沙县| 新蔡县| 泰和县| 正宁县| 遂川县| 隆化县| 彰武县| 穆棱市| 乡城县| 德化县| 清水县| 白玉县| 富阳市| 汾阳市| 嘉鱼县| 阳信县| 巴中市| 巧家县| 芜湖市| 周口市| 尚义县| 内黄县| 静海县| 乐至县| 长丰县| 沂源县| 岱山县| 彰化市| 大渡口区|