锁定屏幕上的服务启动活动会打开屏幕,但不会显示活动本身

Ric*_*rdo 12 android android-activity

我正在尝试从已经获得锁定的服务开始活动,如下所示:

Intent i = new Intent(context, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

活动清单声明如下:

<activity
        android:name=".MyActivity"
        android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation"
        android:excludeFromRecents="true"
        android:launchMode="singleInstance"
        android:screenOrientation="nosensor"
        android:showOnLockScreen="true"
        android:taskAffinity=""
        android:theme="@style/MyTheme" />
Run Code Online (Sandbox Code Playgroud)

最后,on onCreate()或on onAttachedToWindow()(我试过两个),我添加以下标志:

final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

问题是我第一次startActivity()从我的服务中调用时,屏幕会亮起,但活动本身并没有显示出来.它显示锁定屏幕.每次后续调用startActivity()工作正常,但我找不到这种奇怪行为的原因.

我已经尝试过建议获取完整的唤醒锁而不是部分,根据以下SO答案更改清单中的标志和值:

请注意,我的主题不是对话框,而是全屏活动.

还有其他想法吗?

Guy*_*y S 9

我遇到了同样的问题,经过大量的搜索和谷歌,发现解锁了屏幕并弹出我的活动,但它只适用于我的应用程序运行时(前景/背景).

import android.view.Window;
import android.view.WindowManager.LayoutParams;


Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

当应用程序关闭时,我正试图启动一个活动...(使用广播接收器)

在文档中(例如这里)和SO上的大多数答案都是这样添加的:

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
Run Code Online (Sandbox Code Playgroud)

但当我尝试它的方式就像在示例中它解锁屏幕而不是只是打开屏幕.

希望这个帮助.它仍然没有完全解决我的问题.

编辑:

发现这篇帖子解决了我的问题.

那里有一个评论没有使用对话框主题,它为我解决了它


归档时间:

查看次数:

14523 次

最近记录:

6 年 前