如何在application弹出一个全局的dialog?

思路一: 直接在application new dialog执行show方法.

问题,直接在application或服务中new dialog传入的context都是系统的context,需要申请悬浮窗权限,而安卓系统众多,比如小米vivo等,不同的手机申请悬浮窗权限的方式不同,检测是否有悬浮窗权限的方式也不同.导致需要维护很大一段代码来进行,不同手机不同安卓版本的悬浮窗权限的检测申请,我们需要做大量操作.

思路二:

直接在application中new dialog 但是我们在给他context的时候是给他的栈顶activity的context,这样就可以让dialog根据栈顶activity的context,那么谁在栈顶,就是谁弹出.

思路二正确答案解析:

1.在Application中创建dialog

DialogBuilder builder;//这里定义读者自己的dialog
//此方法在需要弹出全局唯一dialog时调用
if (builder != null && builder.isShowing()) {
} else {builder = new DialogBuilder(app_activity).setTitle("提示").setMessage(loginOutBus.getMsg()).setSimpleConfirmButton(com.zhiup.base.R.string.base_confirm, new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {RxBus.getInstance().send(new GoToLoginBus());}
});builder.show();
复制代码

2.获取栈顶activity实例

private Activity app_activity = null;//此声明定义在application中
//此方法定义在Application中并在onCreate中调用
private void initGlobeActivity() {registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {app_activity = activity;Log.e("onActivityCreated===", app_activity + "");}@Overridepublic void onActivityDestroyed(Activity activity) {Log.e("onActivityDestroyed===", app_activity + "");}/** Unused implementation **/@Overridepublic void onActivityStarted(Activity activity) {app_activity = activity;Log.e("onActivityStarted===", app_activity + "");}@Overridepublic void onActivityResumed(Activity activity) {app_activity = activity;Log.e("onActivityResumed===", app_activity + "");}@Overridepublic void onActivityPaused(Activity activity) {Log.e("onActivityPaused===", app_activity + "");}@Overridepublic void onActivityStopped(Activity activity) {Log.e("onActivityStopped===", app_activity + "");}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}});}
复制代码

转载于:https://juejin.im/post/5b3484596fb9a00e315c3060

不用悬浮窗权限弹出全局dialog的解决方法相关推荐

  1. 关于U盘无法弹出的几种解决方法

    U盘无法弹出的N种解决方法 [转自PChome.net] 大家是不是经常遇见"现在无法停止'通用卷'设备.请稍候再停止该设备."的问题?经常插上u盘,mp3,移动硬盘等设备,想要安 ...

  2. 关于浏览器拦截弹出窗口问题的解决方法

    关于浏览器拦截弹出窗口问题的解决方法 正常对于浏览器新开窗口有三种方式 1.html里a标签的target属性 2.javascript的window.open()方法 3.html里form表单的t ...

  3. Android通知栏Notification弹出横幅显示的解决方法

    Android通知栏Notification弹出横幅显示的解决方法 参考文章: (1)Android通知栏Notification弹出横幅显示的解决方法 (2)https://www.cnblogs. ...

  4. win7运行c语言程序,win7打开程序弹出错误0xc000005的解决方法

    有很多win7旗舰版用户反馈,在打开一些程序时候会弹出错误0xc000005的提示导致程序无法打开,比如帝国时代3.穿越火线.三国志13等游戏程序,这究竟是怎么一回事呢?下面由系统城小编给大家介绍一下 ...

  5. 如何用计算机弹出ink sans,Win10系统按“W”键弹出INK工作区的解决方法-电脑自学网...

    最近有使用Win10系统的用户反馈,只要不小心按照"W"键就会弹出INK工作区,因为不知道该如何解决而感到十分苦恼.对于这个问题,下面本文就为大家分享Win10系统按"W ...

  6. win10系统cmd模式下输入python弹出Windows应用商店 解决方法

    win10系统cmd模式下输入python弹出Windows应用商店 解决方法 解决方法1: 打开环境变量设置[此电脑->属性->高级系统设置->环境变量] 在变量Path中发现有% ...

  7. 开机弹出“今日看点”和屏幕右下角弹出小广告的解决方法

    <开机弹出"今日看点"和屏幕右下角弹出小广告的解决方法!> 最近几天,我家电脑屏幕右下角经常弹出广告窗口.<腾讯QQ>和<迅雷看看>弹出来的广告 ...

  8. Android调用系统群发短信,vivo部分手机弹出“无效的地址”解决方法

    Android调用系统群发短信,vivo部分手机弹出"无效的地址"解决方法 第一次写文章,来试试水 之前项目中有一个需求是获取通讯录联系人信息,并展示出来,然后可以选择一个或者多个 ...

  9. win7系统无法开启共享服务器,win7系统启动共享服务弹出错误代码Ox80004005的解决方法...

    很多小伙伴都遇到过win7系统启动共享服务弹出错误代码Ox80004005的困惑吧,一些朋友看过网上零散的win7系统启动共享服务弹出错误代码Ox80004005的处理方法,并没有完完全全明白win7 ...

最新文章

  1. Rust 1.31正式发布,首次引入Rust 2018新功能
  2. 网页设计中HTML常范的五个错误
  3. Python ' ~ ' (取反) 操作符解释
  4. php 半角,php 中全半角转换
  5. ionic4创建页面
  6. php系统如何连接数据库服务器,php如何连接数据库服务器
  7. Properties工具类
  8. 春晚魔术,醉翁之意不在酒
  9. JVM调优总结-调优方法
  10. 用英雄联盟的方式讲解 JavaScript 设计模式
  11. 视频图像传输与显示(2)——彩色模拟电视广播制式NTSC、PAL和SECAM
  12. 汽水分离再热器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. Python Interpreter
  14. 一款表达谱数据分析的神器--CCLE--转载
  15. 换个角度看“量子技术”,它离我们可能不再遥远
  16. Python利用数学方程式画4种不一样的心型图案
  17. 股票买到手想卖可以随时都能卖掉吗
  18. 适合计算机专业的电脑配置,设计师电脑配置,真的要好好看清单
  19. 高手怎么抓热点,每天几点操作?
  20. iOS Still Image Capture Using AVCaptureSession(使用AVCaptureSession获取静止Image)

热门文章

  1. 《数学建模:基于R》——2.2 方差分析
  2. cmake,gtest单元测试程序
  3. Nginx防盗链详细设置
  4. 安装WebDriverAgent时,执行bootstrap.sh脚本报错提示:ERROR in ./js/app.js的解决方法
  5. 用yacc编写的算术运算计算器_详细的mac计算器操作技巧+快捷键分享
  6. asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  7. Windows命令远程执行工具Winexe
  8. 四轴飞行器实践教程(内部资料)
  9. 多少个没收到会收敛_做多少个俯卧撑算是合格?坚持做俯卧撑,会有什么变化?...
  10. php表格 单元格,如何更改PHPWord表格单元格高度?