我在Nexus 6上安装了Android Marshmallow.我正在尝试解决以下问题:
如果用户在显示通知时尝试授予权限,则会显示"检测到屏幕覆盖"消息,并且"请求权限"对话框消失 - 当然,应用程序未获得所请求的权限.(查看截图)
我尝试通过添加"DRAW OVER OTHER APPS"权限来解决问题 - android.permission.SYSTEM_ALERT_WINDOW到清单但没有运气.
PS:我确定问题是由通知引起的.我没有安装任何覆盖其他应用程序的应用程序,我甚至在设置中使用"Draw over other apps"权限关闭了所有应用程序.没有帮助..
有人知道这个问题的解决方案吗?
如何覆盖屏幕?
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事件.
有任何想法吗?