在外部应用程序中保持屏幕开启
Posted
技术标签:
【中文标题】在外部应用程序中保持屏幕开启【英文标题】:Keep screen on in external applications 【发布时间】:2021-09-01 16:56:27 【问题描述】:我想在我的活动生命周期内保持屏幕打开。我们将这个活动称为 A。我通过设置来做到这一点
android:keepScreenOn="true"
在 xml 中。这在大多数屏幕上都能完美运行。但是,Activity A 会启动 Activity B,它会在应用程序的其他部分使用。有没有办法强制 Activity B 在从 Activity A 启动时保持屏幕开启?我读过我应该避免使用唤醒锁;我很好奇其他人对此有何看法。
【问题讨论】:
让活动 B 也使用android:keepScreenOn="true"
。
Activity B 正在我的应用程序的其他地方使用。我只想在从 Activity A 启动时保持屏幕打开。不会改变它使 Activity B 始终保持屏幕打开,即使它是从 Activity C 或其他地方启动的?
啊,好的,现在我明白了!对不起,我今天有点慢。 :-( 使用FLAG_KEEP_SCREEN_ON
的答案应该可以工作。
【参考方案1】:
您可以通过以下方式以编程方式设置它:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
如果您只希望 Activity B 在从 Activity A 启动时保持屏幕开启,您可以这样实现:
当 A 启动 B 时,在 Intent 上发送一个额外的值,在 B 上,onCreate() 检查是否发送了一个值,并且仅当它发现某些东西是因为来自 A 时。
public class ActivityB extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Bundle extras = getIntent().getExtras();
if(extras != null)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
【讨论】:
以上是关于在外部应用程序中保持屏幕开启的主要内容,如果未能解决你的问题,请参考以下文章