android - 如何在不重新启动 Activity 的情况下禁用保持屏幕打开

标签 android android-activity

我正在启动一个 Android Activity 并使用

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

保持屏幕亮着。

后来,我用

清除了标志
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

但这并没有立即生效。 如果我暂停并恢复该应用程序,它就会正常工作

这就是我设置标志并开始 Activity 的方式。这是一个 cordova phonegap 应用程序。在 SipAudioCall 监听器 onRinging 事件中:

Activity activity = SIP.this.cordova.getActivity();
  if (activity instanceof MonmouthTelecom) {
    if (((MonmouthTelecom) activity).isActivityPaused()) {
      Intent notifIntent = new Intent(SIP.this.cordova.getActivity().getApplicationContext(),
             Class.forName(SIP.this.cordova.getActivity().getComponentName().getClassName()));
      notifIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      Log.i(LOG_TAG, "opening app...");

      // set window flags here b4 starting activity...
      ((MonmouthTelecom) activity).setWindowFlags(
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
            SIP.this.cordova.getActivity().getApplicationContext().startActivity(notifIntent);
      }
}

在我调用的 onCallEstablished 事件处理程序上:

  ((MonmouthTelecom) activity).clearWindowFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

设置和清除窗口标志只是: (在定义 Activity 时)

public void setWindowFlags(int flags) {
this.getWindow().addFlags(flags);
}
public void clearWindowFlags(int flags) {
this.getWindow().clearFlags(flags);
}

最佳答案

好的,我想通了。显然我在不同的线程中操作 View 并且使用 cordova 设置,没有输出异常。

SIP.this.cordova.getActivity().runOnUiThread(new Runnable() {...}); 下的 runnable 中调用添加/清除标志 开始工作了。

关于android - 如何在不重新启动 Activity 的情况下禁用保持屏幕打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618056/

相关文章:

android - 无法在 Unity Activity 中返回结果

java - 谁知道 android 媒体播放器在 LogCat 中的 int 值?

java - 多种 Activity 中的 ButterKnife

android - 如何避免旋转时重新创建 Activity,同时尊重方向锁定?

java - 无法在android中设置背景完全透明

android - 如何防止用户在注销后返回 protected 页面

android - 如何通过dataBinding写入带空格的字符串

Android 在我的应用程序中为用户捕获屏幕截图添加过滤器

android - Android中的RecyclerViewAdapter或ListAdapter等Adapter与ViewModel(架构组件)有什么区别?

android - 如何使工具栏保持不变 Android