</pre><pre name="code" class="java"><span style="font-size:18px;">private void showAlertDialog() {
View alarmDialogView = View.inflate(context, R.layout.dialog_alarm, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(alarmDialogView);
alarmDialog = builder.create();
alarmDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alarmDialog.show();
Button sureBtn = (Button) alarmDialogView.findViewById(R.id.dialog_alarm_sure_btn);
sureBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
alarmDialog.dismiss();
}
});
}</span>
Service在服务里面开启线程连接网路,在线程里面不可以弹对话框,解决方法,用handler发消息到主线程里面。在主线程里面调用此方法
要记住添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
话说,这样设置TYPE_SYSTEM_ALERT,这个可以获取焦点,点击任意地方都会dismiss掉dialog,如果设置成TYPE_SYSTEM_DIALOG的话,我运行起来就会报错,所以暂时成为一个bug吧