众所周知在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);