如何在service中弹出dialog

来源:互联网 发布:淘宝买家怎么盖楼 编辑:程序博客网 时间:2024/06/06 08:48

在service中弹出toast很简单,只要使用handler就可搞定,代码如下

hanlder.post(new Runnable() {    @Override    public void run() {        Toast.makeText(DialogService.this, "启动服务", 1).show();     }    });

而在service中弹出dialog时,如果写和activity同样的代码时会报错
s.jpg
因为这个dialog的显示是需要依附于一个activity,如果需要在servcie中显示需要把dialog设置成一个系统的dialog,即全局性质的提示框,所以只要手机处于开机状态,无论它现在处于何种界面之下,只要调用alter.show(),就会弹出提示框来。需要在show() 调用之前添加以下代码:


1
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
注意:使用系统的Dialog需要在清单文件中添加权限,否则不会显示出来
android.permission.SYSTEM_ALERT_WINDOW


全部代码

Builder builder = new AlertDialog.Builder(this);    builder.setTitle("提示");    builder.setMessage("该下车了");    builder.setNegativeButton("取消", new OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {        }    });    builder.setPositiveButton("确定", new OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {        }    });    final AlertDialog dialog = builder.create();    **//在dialog  show方法之前添加如下代码,表示该dialog是一个系统的dialog**    dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));    new Thread(){        public void run() {            SystemClock.sleep(4000);            hanlder.post(new Runnable() {                @Override                public void run() {                    dialog.show();                }            });            };    }.start();}


0 0
原创粉丝点击