在外部应用程序中保持屏幕开启

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);    
      
    

【讨论】:

以上是关于在外部应用程序中保持屏幕开启的主要内容,如果未能解决你的问题,请参考以下文章

Android:保持屏幕开启[重复]

如何在 iOS 设备的外部屏幕上显示自定义内容

Webview 链接在外部浏览器中打开

安卓 11 |范围存储实施

在外部 tomcat 中定义 Spring Boot 应用程序的上下文路径

在外部应用程序 Objective-C 中获取当前文件