android - 在锁定屏幕上显示 UI(Activity/WindowManager)并支持 Oreo

标签 android android-layout android-windowmanager

我的主要目标是在锁定屏幕上显示 UI(使用 EditText,因此支持 IME)(无论是否有 PIN/代码或简单的锁定屏幕)。

我知道 WhatsApp 应用程序正在执行此操作(设置 > 通知 > 始终显示弹出窗口),因此有一个解决方案。

UI 必须从服务初始化。

View 是一个简单的 TextView :

    textview = new TextView(this);
    textview.setText("Hello There!");
    textview.setTextColor(ContextCompat.getColor(this, 
    android.R.color.white));
    textview.setTextSize(32f);

到目前为止,我已经尝试了几种方法: (为了像 whats app 一样重现,当屏幕关闭接收器被调用时我正在做所有事情)

  • 使用窗口管理器

    WindowManager 参数:

    params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT); params.gravity = Gravity.BOTTOM; 参数.screenBrightness = 0;

    Result: TextView is shown only after we unlock the device
    
  • 使用透明 Activity Activity 风格:

    真的 @android:颜色/透明 @无效的 真的 真的 错误的

    此外,还有 android:showOnLockScreen="true"属性

    Result: TextView is shown only after we unlock the device
    

还有什么建议吗?

谢谢。

最佳答案

在您的 Activity 的 onCreate() 中添加:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}

关于android - 在锁定屏幕上显示 UI(Activity/WindowManager)并支持 Oreo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170400/

相关文章:

android - 如何将 NDK 降级到 r8e

android - Facebook shareDialog 不显示任何内容

java - 如何在Android上删除一个文件夹中的所有文件和文件夹

java - 在 Android、Java 上编程重复警报的有效方法

java - 我所有的布局 xml 文件都变成了自动生成的文件

android - 如何在 DatePickerDialog Android 中禁用今天日期之前的日期?

java - 安卓 : Adding bottom border to relativeLayout programatically?

android - WindowManager 在 Android OS 6 特定设备上崩溃

android - BadTokenException 无法添加窗口

android - 在 Android 中将 ImageView 移动到屏幕中心