Android permission denied for window type 2002

来源:互联网 发布:啊哈算法2 pdf 编辑:程序博客网 时间:2024/06/13 01:52

这里写图片描述

  Android6.0以上使用WindownManager实现悬浮窗会出现如图错误信息,这个是因为在Android6.0以上我们需要去打开授权应用ACTION_MANAGE_OVERLAY_PERMISSION权限才可以正常使用悬浮窗。

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            if(!Settings.canDrawOverlays(getApplicationContext())) {                //启动Activity让用户授权                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);                intent.setData(Uri.parse("package:" + getPackageName()));                startActivityForResult(intent,100);            }        }    }@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(requestCode == 100){            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                if (Settings.canDrawOverlays(this)) {                    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);                    WindowManager.LayoutParams params = new WindowManager.LayoutParams();                    params.type = WindowManager.LayoutParams.TYPE_PHONE;                    params.format = PixelFormat.RGBA_8888;                    windowManager.addView(view,params);                }else {                    Toast.makeText(this,"ACTION_MANAGE_OVERLAY_PERMISSION权限已被拒绝",Toast.LENGTH_SHORT).show();;                }            }        }

  这样我们就可以在Android6.0以上的机器中使用悬浮窗的效果了。

阅读全文
0 0