我正在推出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);
}
答案 0 :(得分:1)
好的,我想出来了。显然我在不同的线程中操纵视图,并且使用cordova设置,没有输出异常。
在SIP.this.cordova.getActivity().runOnUiThread(new Runnable() {...});
下的runnable中调用add / clear标志
让它发挥作用。