您的位置:首页 > 移动开发 > Android开发

Android菜鸟笔记-Service中弹出对话框,即全局性质Dialog不依赖于Activity

2013-03-26 19:40 721 查看
1.概述

有时候我们需要在Service中或者在桌面弹出一个Dialog,但创建弹出AlterDialog时会报错,这是因为AlterDialog的显示需要依附于一个确定的Activity类。为了实现这一功能我们需要设定这个AlterDialog为一个系统级警告提示框,即全局性质的提示框。只要手机处于开机状态,无论它现在处于何种界面之下,调用show(),都能弹出。下面以开机启动后如何弹出一个对话框为例,错误之处烦请各位大神指出!

2.实现过程

①编写好创建Dialog代码(示范代码如下,不严谨和疏漏之处请见谅)

private void showBox(final Context context)
{
AlertDialog.Builder dialog=new AlertDialog.Builder(context);
dialog.setTitle("提示");
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.setMessage("完成次数: "+String.valueOf(COUNT)+"\n"+"总计次数: "+String.valueOf(TIMES));
dialog.setPositiveButton("停止测试",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//点击后跳转到某个Activity
Intent result = new Intent(context,xxx.class);
result.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(result);
}
});
AlertDialog mDialog=dialog.create();
mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//设定为系统级警告,关键
mDialog.show();
}
②在AndroidManifest.xml中添加权限

...
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
...


③,在Service中需要的时候调用showBox()就可以了,我上面的代码是用在开机启动的时候弹出对话框,效果图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: