android service Dialog 彈出框

來源:互聯網
上載者:User

標籤:

android service Dialog 彈出框

  相信大家第一次在Service中實現 AlertDialog 彈出框時,都會遇到應用閃退然後報出這個異常:

Caused by: android.view.WindowManager$BadTokenException:

  下面說下為什麼出現這個異常,原因很簡單,是由於 AlertDialog 的顯示是依賴於一個確定的Activity類,所以要想在 Service 中實現彈出來,需要做如下配置:

1、安裝常規寫好 AlertDialog 功能塊後,在alertObj .show()語句前加入:

  alertObj.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

  例如:

  private void showHostOnlineAlert(){        final AlertDialog dialog =new AlertDialog.Builder(BackgroudService.this).create();        dialog.setCanceledOnTouchOutside(false);        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//set background was transparent        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//需要添加的語句        dialog.show();    }

 

2、在AndroidManifest.xml中加入許可權:

 

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

 

總結:以上做法就是聲明我們要彈出的這個提示框是一個系統的提示框,即全域性質的提示框,所以只要手機處於開機狀態,無論它現在處於何種介面之下,只要調用alterObj.show(),就會彈出提示框來。

android service Dialog 彈出框

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.