[英]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.