簡體   English   中英

如何在不重新啟動活動的情況下禁用保持屏幕

[英]How to disable keep screen on without restarting activity

我正在推出Android Activity並使用

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

保持屏幕。

后來,我清除了旗幟

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

但這並沒有立即生效。 如果我暫停應用程序並恢復它,那么它會起作用

所以這就是我設置標志和開始活動的方式。 這是一個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);

設置和清除窗口標志只是:(在定義活動時)

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

好的,我想出來了。 顯然我在不同的線程中操縱視圖,並且使用cordova設置,沒有輸出異常。

SIP.this.cordova.getActivity().runOnUiThread(new Runnable() {...});下的runnable中調用add / clear SIP.this.cordova.getActivity().runOnUiThread(new Runnable() {...}); 讓它工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM