permission denied for window type 2003

今天开发android时遇到这样一个问题:

android.view.ViewRootImpl$W@20e5d20 -- permission denied for window type 2003

这个原因是我想要用系统悬浮弹框,但是没有权限;

fun showDialog(){
    var dialog:AlertDialog.Builder = AlertDialog.Builder(this)
    var alear:AlertDialog =dialog.setIcon(R.drawable.ic_launcher_background).setTitle(R.string.app_name)
            .setMessage(R.string.msg).setPositiveButton(R.string.ok, object : DialogInterface.OnClickListener {
                override fun onClick(p0: DialogInterface?, p1: Int) {
                    Log.e("kotlin","button_click")
                }
            }).create()
    alear.window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
    alear.show()
}

这是我代码,代码提示TYPE_SYSTEM_ALERT 已经过时,于是在网上又找到另外一个,要使用TYPE_APPLICATION_OVERLAY

类型。  试了还是不行,这是Manifest的代码;

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

怎么办;在程序信息里看到没有此类的权限,原来是另外的设置:



设置后,报另外一个错误:permission denied for window type 2038

然后是我的系统7.1,权限改为TYPE_PHONE可以,但是没实现悬浮的感觉,只是需要自定义View,下面是完整代码.

fun showDialog() {
    var dialog: AlertDialog.Builder = AlertDialog.Builder(this)
    var alear: AlertDialog = dialog.setIcon(R.drawable.ic_launcher_background).setTitle(R.string.app_name)
            .setMessage(R.string.msg).setPositiveButton(R.string.ok, object : DialogInterface.OnClickListener {
                override fun onClick(p0: DialogInterface?, p1: Int) {
                    Log.e("kotlin", "button_click")
                }
            }).create()
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
        alear.window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY)
    } else {
        alear.window.setType(WindowManager.LayoutParams.TYPE_PHONE)
    }
    alear.window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
    alear.show()
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值