转自:http://blog.csdn.net/huxueyan521/article/details/8954844

dialog是依附于activity存在的。但是app中经常需要使用以下的情况,在service中做一些后台操作,在某个临界条件满足时,显示一个dialog告知用户。

这时dialog无法直接从service中启动起来,会报出android.view.WindowManager$BadTokenException:Unable to add window的错误。

解决方法有两种:

1. 显示一个系统界别的dialog,即全局性质的dialog。这种dialog在任何界面下都可以弹出来。但是,这种dialog不相应home键和返回键,即强制用户必须对dialog作出操作后。

使用方法是在dialog.show()语句之前设置dialog的window的type是system alert型。如下:

[java] view plaincopyprint?
  1. dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
  2. dialog.show();

还需要在AndroidManifest.xml中增加权限:

[html] view plaincopyprint?
  1. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

2. 在dialog的背后加一个透明的activity。即先显示一个透明的activity,在使用activity的context显示dialog。需要注意的是,activity在destroy的时候一定要把dialog给dismiss掉,否则activity消失但dialog还在,会crash。

透明activity的创建方法是在AndroidManifest.xml中添加theme:

[html] view plaincopyprint?
  1. <activity
  2. android:name="com.a.b.activity"
  3. android:theme="@android:style/Theme.Translucent">
  4. </activity>

另外,需要设置activity没有actionbar,设置方法是在Activity的onCreate方法中增加:

[java] view plaincopyprint?
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);

android service中显示一个dialog相关推荐

  1. service中显示一个dialog

    dialog是依附于activity存在的.但是app中经常需要使用以下的情况,在service中做一些后台操作,在某个临界条件满足时,显示一个dialog告知用户. 这时dialog无法直接从ser ...

  2. Android Settings中显示自定义dialog

    第一种方法,参照NightDisplaySettings.java @Overridepublic boolean onPreferenceTreeClick(Preference preferenc ...

  3. Android在Service中显示Dialog

    在Service中弹出一个Dialog对话框 第1步:在应用的AndroidManifest.xml中需要添加权限.没有无法显示. <uses-permission android:name=& ...

  4. android中布局全屏,怎么在Android 应用中实现一个全屏与非全屏功能

    怎么在Android 应用中实现一个全屏与非全屏功能 发布时间:2020-12-04 17:31:45 来源:亿速云 阅读:135 作者:Leah 怎么在Android 应用中实现一个全屏与非全屏功能 ...

  5. android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能

    怎么在Android应用中实现一个网页图片浏览功能 发布时间:2020-12-05 17:28:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关怎么在Android应用中实现 ...

  6. android 工具栏沉浸 下拉,如何在Android应用中实现一个沉浸式状态栏效果

    如何在Android应用中实现一个沉浸式状态栏效果 发布时间:2020-12-08 17:04:42 来源:亿速云 阅读:151 作者:Leah 这篇文章将为大家详细讲解有关如何在Android应用中 ...

  7. 可视化:在窗口中显示一个球,该球以与水平成45度夹角作直线运动,当遇到边界时,反弹回来,仍与水平成45度角继续运动。

    在窗口中显示一个球,该球以与水平成45度夹角作直线运动,当遇到边界时,反弹回来,仍与水平成45度角继续运动. #include<windows.h> #include<stdlib. ...

  8. android led闪烁功能,如何在Android应用层中制作一个LED指示灯效果

    如何在Android应用层中制作一个LED指示灯效果 发布时间:2020-12-08 16:12:59 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关如何在Android应用层中 ...

  9. android中的后退功能,如何在Android应用中实现一个返回键功能

    如何在Android应用中实现一个返回键功能 发布时间:2020-11-23 16:28:56 来源:亿速云 阅读:89 作者:Leah 今天就跟大家聊聊有关如何在Android应用中实现一个返回键功 ...

最新文章

  1. java 反射 注解 运用_Java注解与反射的使用
  2. 【解答】一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待。
  3. Python实训day05am【正则表达式、网络爬虫】
  4. 【深入Java虚拟机】之一:Java内存区域与内存溢出
  5. 多台电脑集群运算_答疑 | 三维建模的【电脑】配置问题
  6. 硅谷公司:我们称他们为软件工程师,而非打工人
  7. idea新建web项目并配置运行教程
  8. torch.optim.lr_scheduler.MultiStepLR()用法研究 台阶/阶梯学习率
  9. 线性代数、微积分学习与回顾
  10. 关于U盘格式化以后容量突然减少很多的解决办法
  11. 人类微生物组和缺失遗传力--读论文
  12. Kindeditor在线 HTML 编辑器使用
  13. C++程序的设计机制1:NVI机制(Non-Virtual Interface )
  14. android 自动亮屏解锁,android 点亮手机屏幕与屏幕解锁方法
  15. 用C语言求一元二次方程的解
  16. 小白学渗透——渗透测试基本流程
  17. 如何把多张图片合成视频
  18. rsync 命令_rsync命令教程示例
  19. 机制设计专栏(2)-说一说IC机制
  20. 输入电压=24V 输出电压=8V 1.5A TO-252-5 DCDC芯片推荐

热门文章

  1. python小黄人程序_python signal信号
  2. 如何用python开发游戏_手把手教你用Python完成一个控制台小游戏-阿里云开发者社区...
  3. java中 a_java中 a++ 和 ++a
  4. 每天一道LeetCode-----找到由连续数字组成的数组中缺失的那个连续值
  5. 送计算机教授教师节礼物,教师节送教授什么礼物好
  6. golang基于UDP完成
  7. AppleScript 以管理员身份运行程序
  8. Android安卓模拟器中模拟SD卡
  9. DEBUG各命令详细说明(很详细)
  10. mysql删除表命令语句_MySQL增删改查语句命令(一)