相关疑难解决方法(0)

如果用户在显示通知时尝试授予权限,则会显示Android"屏幕覆盖检测到"消息

我在Nexus 6上安装了Android Marshmallow.我正在尝试解决以下问题:

如果用户在显示通知时尝试授予权限,则会显示"检测到屏幕覆盖"消息,并且"请求权限"对话框消失 - 当然,应用程序未获得所请求的权限.(查看截图)

我尝试通过添加"DRAW OVER OTHER APPS"权限来解决问题 - android.permission.SYSTEM_ALERT_WINDOW到清单但没有运气.

PS:我确定问题是由通知引起的.我没有安装任何覆盖其他应用程序的应用程序,我甚至在设置中使用"Draw over other apps"权限关闭了所有应用程序.没有帮助..

有人知道这个问题的解决方案吗?

在此输入图像描述

permissions android android-6.0-marshmallow

79
推荐指数
4
解决办法
8万
查看次数

Android:系统覆盖

如何覆盖屏幕?

  1. 它应该是可触摸的
  2. 视图必须覆盖系统操作栏
  3. 视图必须覆盖软按钮返回/ home/recent_apps
  4. Android 4.0 +

    public class MyService extends Service {
    
    @Override
    public void onCreate() {
        super.onCreate();
        WindowManager.LayoutParams params = ViewUtils.generateFullScreenParams(true);
    
        final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.addView(overlayView, params);
    }
    ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

和布局参数创建者

public static WindowManager.LayoutParams generateFullScreenParams() {
    return new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,

            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                    | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                    | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,

            PixelFormat.TRANSLUCENT);
}
Run Code Online (Sandbox Code Playgroud)

好的,看起来不错.

标志TYPE_SYSTEM_ALERT 覆盖系统栏(android <5.0),覆盖软按钮,但我可以处理onTouch事件

标志TYPE_SYSTEM_OVERLAY 覆盖系统栏,而不是覆盖按钮,我无法处理onTouch事件.

有任何想法吗?

java android android-layout

8
推荐指数
1
解决办法
740
查看次数