Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限
来源:互联网 发布:matlab优化工具箱在哪 编辑:程序博客网 时间:2024/05/19 16:48
方案一、
1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2、创建Dialog
AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setIcon(R.drawable.logo_mini); builder.setTitle("下线通知").setMessage("该账号在另一台Android设备上登录。") .setPositiveButton("重新登陆", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //do somthing } }).setNegativeButton("退出",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent i=new Intent(CoreService.this,LoginActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } }); alertDialog = builder.create(); alertDialog.setCancelable(false); alertDialog.setCanceledOnTouchOutside(false); alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show();
注意要设置Dialog的Window类型为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT。
方案二、
采用方案一带来的问题:
- 用户在安装应用时会询问用户是否授权问题
- 同时在小米手机上默认是禁止系统弹出框的,应用中的系统弹出框将不能够弹出
那能不能不申请系统权限,又能弹出提示框提示用户呢?
这里妨转换思路,既然系统弹出框弹不出,我们就不采用系统弹出框,给他弹个Activity替代。但这个时候注意,要再Service是中或者ApplicationContext中startActivity时要添加额外标志ntent.FLAG_ACTIVITY_NEW_TASK:
Intent i=new Intent(this,ActDialog.class);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(i);//代码中ActDialog其实是一个Activity把主题给它应用@android:style/Theme.Dialog//把activity做的像一个Dialog的风格
这样解决了权限申请和小米手机全局Dialog默认无法展示的问题。
最后补充一下在方案一中也可以不申请权限就能弹出对话框,将弹出Window type 改为LayoutParams.TYPE_TOAST,但是这种类型的弹出框是不能接受事件处理的。
阅读全文
0 0
- Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限
- android弹出全局对话框
- android M SYSTEM_ALERT_WINDOW权限问题
- android 特殊权限SYSTEM_ALERT_WINDOW,WRITE_SETTINGS
- android service弹出全局对话框
- Android6.0 申请SYSTEM_ALERT_WINDOW权限 没有弹出权限框
- 随笔:关于权限android.permission.SYSTEM_ALERT_WINDOW
- Android 在Service中弹出窗口及SYSTEM_ALERT_WINDOW权限解决方法
- android弹出了一个全局性质的对话框
- Android 弹出全局dialog
- Android O 特殊权限SYSTEM_ALERT_WINDOW申请,“permission denied for window type”报错处理
- 在Android中捕获Application全局异常 阻止系统弹出强制退出的对话框
- android apk 捕获全局异常处理,阻止弹出系统强制退出对话框
- android 弹出对话框 弹出自定义对话框
- android弹出对话框
- Android 弹出对话框Dialog
- Android 弹出对话框Dialog
- Android弹出自定义对话框
- 【C/C++】从零开始的cmake教程
- 微信小程序——校园活动地图后端开发日志(2)
- Golang协程调度
- MySQL基础教程4-SQL基础概念
- Coin Test
- Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限
- leetcode题解c++ | 76. Minimum Window Substring
- 数据结构与算法1.概念及术语
- Nginx安装
- 栈的应用之表达式求值(二)
- C# WinForm 中 MessageBox的使用详解
- Netty实现长连接简单例子
- 【Android实测】WebView的JS注入
- Android 在Service中弹出窗口及SYSTEM_ALERT_WINDOW权限解决方法