衆所周知在Activity中想要顯示一個Dialog非常的簡單,系統已經創建好了接口,只要實現即可。例如:
- <span style="font-family:Microsoft YaHei;font-size:18px;">AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
- builder.setTitle("AlertDialog");
- builder.setMessage("1.TEST\n2.TESTTEST\n3.TESTTESTTEST");
- builder.show();</span>
非常的簡單就可以顯示一個dialog了。但是如果應用沒有界面,只是一個Service,怎麼樣顯示一個dialog呢?
回答也是非常的簡單。
第1步:在應用的AndroidManifest.xml中加入兩個權限。沒有無法顯示。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />//一般用這個。
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />//這個顯示比較高。
第2步:在你的Service類中創建要顯示的Dialog。代碼如下:
- private void showAlertDialog(Context mContext) {
- //create ui
- //use custom UI.
- //View v = View.inflate(mContext, R.layout.activity_main, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
- builder.setTitle("AlertDialog");
- builder.setMessage("1.TEST\n2.TESTTEST\n3.TESTTESTTEST");
- builder.setPositiveButton("Sure", null);
- // builder.setView(v);//use custom view
- AlertDialog dialog = builder.create();//need a <span style="font-family: 'Microsoft YaHei';">AlertDialog</span>
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//use alert.
- // dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
- dialog.show();
- //set dialog size and position.
- /*WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();
- WindowManager wm=(WindowManager) getSystemService(WINDOW_SERVICE);
- Display display = wm.getDefaultDisplay();
- lp.width=(int) (display.getWidth()*0.8);
- lp.height=(int) (display.getHeight()*0.5);
- lp.x=0;
- lp.y=0;
- dialog.getWindow().setAttributes(lp);*/
- }
第4步:總結:在Service中創建dialog和activity中創建是一樣的只是給dialog增加了一個
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);