android service 如何弹出dialog

时间:2022-03-15 20:18:48

在service中弹出toast,需要使用handler,

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

在service中弹出dialog,写着跟activity同样代码会报错。

因为这个dialog显示时是需要依赖一个activity,如何需要在service中显示需要把dialog设置成一个系统的dialog,即全局性质的提示框。

 dialog.getWindow().setType((WindowManager.LayoutParams,TYPE_SYSTEM_ALERT));
//在dialog show 方法之前添加这个代码,表示该dialog是系统的dialog。

注意:

使用系统dialog,需要在清单文件中添加权限:

 android.permission.SYSTEM_ALERT_WINDOW

e.g.

 Builder builder = new AlertDialog.Builder(this);
builder.setMessage("是否重启服务");
builder.setNegativeButton("取消", new OnClickListense() {
@Override
public void onClick(DialogInterface dialog, int which) {
// to do
}
});
builder.setPositiveButton("确定", new OnClickListense() {
@Override
public void onClick(DialogInterface dialog, int which) {
// to do
}
});
final AlertDialog dialog = buidler.create();
//在dialog show前添加此代码,表示该dialog属于系统dialog。
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
new Thread() {
public void run() {
SystemClock.sleep(2000);
hanlder.post(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
};
}.start();