棉花糖或更高版本的Windows类型2010的Android权限被拒绝

棉花糖或更高版本的Windows类型2010的Android权限被拒绝,第1张

概述我试图像我的波纹管图像一样通过我的应用程序上的Android服务过度绘制Chathead类型.这个聊天头应用程序可在Android版本5或更低版本(kitkat,lollipop等)上运行.但是我正在棉花糖和更高版本中尝试使用,然后出现此错误.android.view.WindowManager$BadTokenException:Unableto

我试图像我的波纹管图像一样通过我的应用程序上的Android服务过度绘制Chathead类型.

这个聊天头应用程序可在AndroID版本5或更低版本(kitkat,lollipop等)上运行.但是我正在棉花糖和更高版本中尝试使用,然后出现此错误.

 androID.vIEw.WindowManager$BadTokenException: Unable to add window androID.vIEw.VIEwRootImpl$W@48f5767 -- permission denIEd for window type 2010

聊天头代码

注意:我正在从AndroID Service调用此函数

权限列表:

<uses-permission androID:name="androID.permission.SYstem_ALERT_WINDOW" /><uses-permission androID:name="androID.permission.BIND_DEVICE_admin" /><uses-permission androID:name="androID.permission.RECEIVE_BOOT_COMPLETED" />

    

private WindowManager windowManager;private ImageVIEw chathead;WindowManager.LayoutParams params;@OverrIDe    public voID onCreate() {        super.onCreate();        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);        chathead = new ImageVIEw(this);        chathead.setimageResource(R.drawable.settingsicon);        params = new WindowManager.LayoutParams(                WindowManager.LayoutParams.WRAP_CONTENT,                WindowManager.LayoutParams.WRAP_CONTENT,                WindowManager.LayoutParams.TYPE_PHONE,                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,                PixelFormat.TRANSLUCENT);        params.gravity = Gravity.top | Gravity.left;        params.x = 0;        params.y = 100;        windowManager.addVIEw(chathead, params);        chathead.setontouchListener(new VIEw.OntouchListener() {            private int initialX;            private int initialY;            private float initialtouchX;            private float initialtouchY;            @OverrIDe            public boolean ontouch(VIEw v, MotionEvent event) {                switch (event.getAction()) {                    case MotionEvent.ACTION_DOWN:                        initialX = params.x;                        initialY = params.y;                        initialtouchX = event.getRawX();                        initialtouchY = event.getRawY();                                               return true;                    case MotionEvent.ACTION_UP:                                                return true;                    case MotionEvent.ACTION_MOVE:                        params.x = initialX + (int) (event.getRawX() - initialtouchX);                        params.y = initialY + (int) (event.getRawY() - initialtouchY);                        windowManager.updateVIEwLayout(chathead, params);                        return true;                }                return false;            }        }    }

如何解决Mashmallow或更高版本的AndroID上的此错误?

解决方法:

在显示聊天标题之前,请调用此方法以请求许可:

 public voID addOverlay() {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {        if (!Settings.canDrawOverlays(this)) {            askedForOverlayPermission = true;            Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackagename()));            startActivityForResult(intent, OVERLAY_PERMISSION_CODE);        }    }}

在许可结果上,如果用户允许许可,则只有您可以显示聊天头,如下所示:

 @OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if (requestCode == OVERLAY_PERMISSION_CODE) {        askedForOverlayPermission = false;        if (Settings.canDrawOverlays(this)) {            // SYstem_ALERT_WINDOW permission not granted...            //Toast.makeText(MyProtector.getContext(), "ACTION_MANAGE_OVERLAY_PERMISSION Permission Granted", Toast.LENGTH_SHORT).show();            Intent serviceIntent = new Intent(Homepage.this, ChatheadService.class);            serviceIntent.putExtra("removeUserID", frIEndID);            startService(serviceIntent);        } else {             Toast.makeText(MyProtector.getContext(), "ACTION_MANAGE_OVERLAY_PERMISSION Permission DenIEd", Toast.LENGTH_SHORT).show();        }    }

让我知道它是否对您有帮助…祝您好运.

总结

以上是内存溢出为你收集整理的棉花糖或更高版本的Windows类型2010的Android权限被拒绝全部内容,希望文章能够帮你解决棉花糖或更高版本的Windows类型2010的Android权限被拒绝所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1094775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存