转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/71758817

Android 对话框,支持Android 6.0 API23 及其以上,(当然也支持6.0之下的),可在任何界面显示,位于其他对象之上,可用于广播broadcast、服务Service、活动Activity开启对话框等情况。下面是使用广播显示的一个结果(使用的是Android 7.1.1 API25):

Android 对话框弹出(支持Android 6.0及其以上)_第1张图片

1.Mainifests权限:

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

2.Android 6.0及其以上需要动态申请权限,使用时调用方法dialogOpenPower():

public void dialogOpenPower(){        if(Build.VERSION.SDK_INT >= 23)            if (! Settings.canDrawOverlays(this)) {                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,                        Uri.parse("package:" + getPackageName()));                startActivityForResult(intent,10);            }    }

调用此方法后进入授权界面,此处是模拟器测试结果:
Android 对话框弹出(支持Android 6.0及其以上)_第2张图片

3.如果没有授权的响应:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == 10) {        if (!Settings.canDrawOverlays(this)) {            // SYSTEM_ALERT_WINDOW permission not granted...            Toast.makeText(MainActivity.this,"not granted",Toast.LENGTH_SHORT);        }    }}

4.文本框显示代码,使用时将this改为相应的上下文,然后调用方法即可(例如,广播即为onReceiver()的参数context)

public void  alertDialod(){        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setMessage("Are you sure you want to exit?")                .setCancelable(false)                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int id) {                    }                })                .setNegativeButton("No", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int id) {                        dialog.cancel();                    }                });        AlertDialog alert = builder.create();        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);        alert.show();    }

参考:
以下API链接的SYSTEM_ALERT_WINDOW讲解:
https://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW

以下API链接的canDrawOverlays讲解:
https://developer.android.com/reference/android/provider/Settings.html#canDrawOverlays(android.content.Context)

参考博文:
http://blog.csdn.net/chenlove1/article/details/52047105

更多相关文章

  1. 消除“Unfortunately, System UI has stopped”的方法
  2. android 调用系统相机或者系统相册功能时,onActivityResult方法不
  3. andorid中Html.fromHtml方法
  4. Android禁止横屏竖屏切换的有效方法
  5. 知识梳理:Android子线程中更新UI的3种方法

随机推荐

  1. 【Android(安卓)百度地图实战】1.构建一
  2. Android开机自启动服务的实现方法
  3. Android之在string.xml配置文字颜色粗体
  4. android sp wp
  5. WebView加载网页基本配置
  6. Android(安卓)Activity启动机制流程和四
  7. Android(安卓)学习 之 键盘问题
  8. Android(安卓)如何更改包名
  9. 关注 在自我和潮流中一直前进的榜样 !
  10. 反向控制-Inversion of Control(JAVA App