Service中弹出AlertDialog对话框

       被这个问题难住了很长时间,在网长查了很多,说是可以显示,但自己尝试总不能弹出。最后在一个论坛中搜到一个回贴,试了一下居然成功了。在Activity可以直接弹出,个人觉得在Service中弹出时,长宽可能变为0了,所以不可见。如果有弹不出的可以试一下加上最后那一段设置界面大小的代码试试!把代码贴上

		_EdtPassword = new EditText(_Context);
		AlertDialog.Builder builder = new AlertDialog.Builder(_Context);
		builder.setTitle("请输入密码");
		builder.setView(_EdtPassword);
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				String ps = UCOper.getSaveInfo(_Context, "password");
				if(ps == null)
					ps = "";
				if(!_EdtPassword.getText().toString().equals(ps))
				{
					UCOper.dispInfo(_Context, "输入的密码不正确,请重新输入!");
					SetFocus(_EdtPassword);
					CloseAlertDialog(dialog, false);					
				}
				else
					CloseAlertDialog(dialog, true);
			}});
		AlertDialog ad = builder.create();
		//ad.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
		ad.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
		
        WindowManager.LayoutParams lp = ad.getWindow().getAttributes();  
        WindowManager wm = (WindowManager) _Context  
                .getSystemService(Context.WINDOW_SERVICE);  
        Display display = wm.getDefaultDisplay();  
        if (display.getHeight() > display.getWidth())  
        {  
            lp.width = (int) (display.getWidth() * 1.0);  
        }  
        else  
        {  
            lp.width = (int) (display.getWidth() * 0.5);  
        }  
		
        ad.getWindow().setAttributes(lp); 	
        ad.show();


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值