每次有人打开屏幕时,我都会尝试使用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锁屏。我的意图有问题吗?
答案 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有联系,要求全面披露