gpt4 book ai didi

android - 在锁屏拨号器上方显示 Activity (主题对话框)?

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:35 25 4
gpt4 key购买 nike

需要在拨号器上显示 Activity (主题对话框),并在 Activity 中填充一些信息,例如真正的来电者。在解锁手机中,它运行良好。

但在锁定的手机中,它没有按预期工作。做了一些谷歌搜索,发现需要添加一些标志才能使对话框出现在锁定屏幕中。

调用 Activity .java

LayoutParams layoutParams = new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_SYSTEM_DIALOG | LayoutParams.TYPE_SYSTEM_ALERT |
LayoutParams.TYPE_SYSTEM_OVERLAY,
LayoutParams.FLAG_NOT_TOUCH_MODAL |
LayoutParams.FLAG_NOT_FOCUSABLE |
LayoutParams.FLAG_TURN_SCREEN_ON |
LayoutParams.FLAG_SHOW_WHEN_LOCKED |
LayoutParams.FLAG_KEEP_SCREEN_ON |
LayoutParams.FLAG_DISMISS_KEYGUARD,
PixelFormat.TRANSLUCENT);
getWindow().setAttributes(layoutParams);

在上面的代码中,我添加了与使 Activity 显示为对话框相关的更改和一些与使对话框在锁定屏幕中正常工作相关的标志(FLAG_TURN_SCREEN_ON、FLAG_SHOW_WHEN_LOCKED、FLAG_KEEP_SCREEN_ON、FLAG_DISMISS_KEYGUARD)(但它没有)。

我也开始 Activity (来自广播接收器)

            Intent intent = new Intent(context, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
context.startActivity(intent);

最佳答案

在具有系统警报权限的窗口管理器上添加 View

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

mParams = new WindowManager.LayoutParams();
mParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
mParams.format = PixelFormat.TRANSLUCENT;
mParams.flags = 262184;

mWindowManager.addView(view, mParams);

注意:如果应用程序以 API 级别 23 或更高级别为目标,则应用程序用户必须通过权限管理屏幕明确向应用程序授予此权限。该应用程序通过发送带有操作 ACTION_MANAGE_OVERLAY_PERMISSION 的 Intent 来请求用户的批准。应用程序可以通过调用Settings.canDrawOverlays()来检查自己是否有这个授权。

关于android - 在锁屏拨号器上方显示 Activity (主题对话框)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com