猿问

API 26 及更高版本中锁定屏幕上的服务浮动窗口

我需要在呼叫号码上显示带有文本视图的浮动窗口,这在锁定屏幕上工作正常并在较低的 API(比 26)上解锁,在从服务运行代码时,在锁定屏幕上显示浮动窗口的正确方法是什么?


此代码适用于 API 26+ 的解锁屏幕


if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O){

            windowParams2 = new WindowManager.LayoutParams(

                    WindowManager.LayoutParams.WRAP_CONTENT,

                    WindowManager.LayoutParams.WRAP_CONTENT,

                    WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,

                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,

                    PixelFormat.TRANSLUCENT);

            windowParams2.x = 0;

            windowParams2.y = 0;

            windowParams2.gravity = Gravity.CENTER;


        }else{


            windowParams2 = new WindowManager.LayoutParams(

                    WindowManager.LayoutParams.WRAP_CONTENT,

                    WindowManager.LayoutParams.WRAP_CONTENT,

                    WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,

                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE ,

                    PixelFormat.TRANSLUCENT);

            windowParams2.x = 0;

            windowParams2.y = 0;

            windowParams2.gravity = Gravity.CENTER;

        }


阿晨1998
浏览 174回答 1
1回答

米琪卡哇伊

添加以下标志:WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON另外不要忘记,如果您希望它正常工作,您需要向清单添加一些权限:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><uses-permission android:name="android.permission.WAKE_LOCK" />
随时随地看视频慕课网APP

相关分类

Java
我要回答