一、手机版本问题,大多数文章没有涉及这个点,导致他们的代码并无法正常使用
  M版本以上需要使用的Type–>TYPE_APPLICATION_OVERLAY
  AlertDialog.Builderbuilder=newAlertDialog.Builder(getApplicationContext());
  builder.setTitle(“提示”);
  builder.setMessage(“service弹框”);
  builder.setNegativeButton(“明白了”,null);
  Dialogdialog=builder.create();
  if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){//6.0
  dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
  }else{
  dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
  }
  dialog.show();
  同时,因为涉及不同版本的Android系统
  AndroidManifest.xml中声明同时需要这两个类型对应的权限
  uses-permissionandroid:name=”android.permission.SYSTEM_ALERT_WINDOW”/
  uses-permissionandroid:name=”android.permission.SYSTEM_OVERLAY_WINDOW”/android
  二、权限问题,service中弹出的对话框为系统弹框,在M版本以上需要申请悬浮窗权限
  Android6.0以前悬浮窗是默认允许的
  注意Android6.0以后的使用
  因为悬浮窗权限SYSTEM_ALERT_WINDOW属于特殊权限,需要自己特别单独申请
  特殊权限,顾名思义,就是一些特别敏感的权限,在Android系统中,主要由两个
  SYSTEM_ALERT_WINDOW(设置悬浮窗,进行一些黑科技)
  WRITE_SETTINGS(修改系统设置)
  关于上面两个特殊权限的授权,做法是使用startActivityForResult启动授权界面来完成。
  申请方式:
  privatestaticfinalintREQUEST_CODE=1;
  privatevoidrequestAlertWindowPermission(){
  Intentintent=newIntent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
  intent.setData(Uri.parse(“package:”+getPackageName()));
  startActivityForResult(intent,REQUEST_CODE);
  }
  @Override
  protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
  super.onActivityResult(requestCode,resultCode,data);
  if(requestCode==REQUEST_CODE){
  if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
  if(Settings.canDrawOverlays(this)){
  Log.i(“xqxinfo”,”onActivityResultgranted”);
  }
  }
  }
  }

浅谈Service中实现弹出对话框的坑相关推荐

  1. Web开发中的弹出对话框控件介绍

    Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了.不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由 ...

  2. vue中新增弹出对话框操作

    情景: 点击新增用户或者新增订单,弹出对话框页面进行信息输入操作 分析: 这个对话框组件是直接放到用户组件代码中的,自带一个属性,控制是否显示,默认为false不显示,需要显示的时候拿到此属性对应的变 ...

  3. C++中各种弹出对话框

    #include<windows.h> #include<cstdio> int main(){int x;x=MessageBox(GetForegroundWindow() ...

  4. asp.net 2.0中的弹出对话框

    在asp.net 1.1中,要做1个弹出的对话框的话,一般是在服务端的代码中这样写: btnClick.Attributes.Add("onclick", "return ...

  5. javascript--弹出对话框 四种对话框 获得用户输入值 .

    让用户点击确定 取消.让用户输入值.打开指定窗口 alert("message") confirm("message") prompt("messag ...

  6. javascript 弹出对话框

    首先我想先说两句我对javascript的一些看法,我希望大家认真的去学习这门编程语言,因为它给我们在开发网页时,会带来很多的惊喜!javascript一般是运行在客户端的(client),主要用于开 ...

  7. java前端 js弹出框_js 弹出对话框3种方式

    js 弹出对话框3种方式 (2012-12-03 16:10:47) 标签: it javascript js 弹出对话框3种方式对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认 ...

  8. HTML中弹窗中加入图片,javascript里怎么实现点击图片弹出对话框?

    JavaScript中可以使用document.getElementsByTagName方法后去img标签,然后遍历所有img标签并为其添加点击事件实现点击弹出对话框. JavaScript实现点击图 ...

  9. python中pygame增加对话框_在pygame中制作弹出窗口与pgu

    我在用pygame编写的游戏中添加了一些gui元素(带有按钮的对话框).我环顾四周寻找一个体面的GUI工具包,并以pgu结束.无论如何,我试图让它弹出一个对话框,它确实(有点),但它不关闭.在pyga ...

最新文章

  1. 我的家乡网页设计_Graphic Design|康石石浅谈LOGO设计在作品集中的创作方法
  2. 坚持教学与科研相结合
  3. python语法基础知识-python_基础知识_安装和基础语法
  4. SQL SERVER 导入EXCEL的存储过程
  5. VUE.js项目中控制台报错: Uncaught (in promise) NavigationDuplicated解决方法
  6. BZOJ4327:[JSOI2012]玄武密码(SAM)
  7. 《构建之法》--阅读(第13章-第17章)
  8. java web 集成dom4j_[JavaWeb基础] 031.dom4j写入xml的方法
  9. hive窗口函数_Hive sql窗口函数源码分析
  10. Unit Tests Tool - What is “Mock You” The introduction to moq #Reprinted#
  11. 学习日记12、list集合中根据某个字段进行去重复操作
  12. 看黑马程序员视频学习之节点操作之复制节点
  13. UCINET软件使用简介——主菜单简介2
  14. 秒杀项目(2)集成redis
  15. Python以TCp搭建小游戏服务器
  16. 音频知识之OGG格式分析
  17. 一份成功的高薪软件测试求职简历应该是这样的
  18. 【医疗图像分割】Deep neural networks for the detection and segmentation of the retinal fluid in OCT images.
  19. html 跑步比赛小游戏,小班游戏教案:跑步比赛
  20. python 千位分隔符_千位分隔符的完整攻略

热门文章

  1. Stylized NeRF 水记(NeRF的风格化)
  2. 创业教父YC创始人Paul Graham就很烦鼓动年轻创业的
  3. 51单片机LED流水灯、走马灯的实现
  4. Linux 触摸屏 笔记本,Linux 5.2应该可以解决许多AMD Ryzen笔记本电脑触摸屏/触摸板无法工作的问题...
  5. 强烈推荐33个 GitHub 前端学习资源
  6. 用 typescript 做一个贪吃蛇小游戏
  7. 犹他州计算机科学,美国犹他州立大学计算机系终身教授承恒达博士访问学科部...
  8. 支付宝提现免手续费的方法步骤
  9. 整数二分详解---yxc
  10. mermaid制作饼图