从历史记录调用活动时,Android FLAG_SHOW_WHEN_LOCKED

时间:2015-05-29 12:57:34

标签: android android-intent lockscreen

每次有人打开屏幕时,我都会尝试使用FLAG_SHOW_WHEN_LOCKED和FLAG_DISMISS_KEYGUARD来显示活动。它在大多数时候运作良好,但有一些情况导致奇怪的行为。当活动已经存在时会发生这种情况,并且在通过使用 Home 按钮将其移回历史堆栈后发送它。

首先,如果我在活动时按 Home 按钮,然后关闭并打开屏幕,活动将立即显示。然而,显示的是基本的android锁屏。我的活动落后了。

最糟糕的是,如果我触摸主屏幕,然后关闭并打开屏幕,主屏幕覆盖(所有appli徽标和小部件)都会显示我的活动在后台!

每次关闭屏幕时我使用的意图是laucn并回想起活动:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(intent);

所以,似乎当我的活动在历史堆栈中时,它有时无法正确调用并绕过android锁屏。我的意图有问题吗?

2 个答案:

答案 0 :(得分:0)

添加更多标志:

auto func1 = FUNCTION(void, foobar, (double));
auto func2 = FUNCTION(void, foobar, ());
auto func3 = FUNCTION(void, foobar, (int));

通过您的活动 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 或使用Intent.addFlags()。这些标志将在您的活动开始时禁用锁屏

这将解决您的查询

参考答案:Here

答案 1 :(得分:0)

您可以在应用中集成Adenda SDK,以实现您的目标。它们让您可以相对轻松地在锁定屏幕上显示您想要的内容。

我与Adenda有联系,要求全面披露