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

来源:互联网 发布:手机上解压软件 编辑:程序博客网 时间:2024/05/27 21:50

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() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub//点击后跳转到某个ActivityIntent 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()就可以了,我上面的代码是用在开机启动的时候弹出对话框,效果图如下:



原创粉丝点击