2015-07-24 3 views
3

Я запускаю Android Activity и использовалКак отключить экран Сохраняет без перезагрузки активности

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

держать экран на.

Позже я очистил флаг с

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

Но это не вступает в силу немедленно. Если я приостановил приложение и возобновил его, тогда он работал бы.

Так вот как я устанавливаю флаги и начинаю деятельность. Это приложение phonegap для cordova. В 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

Хорошо, что зависит от того, где u используется 'getWindow(). ClearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);' statement –

+0

, куда он должен идти? Я запускаю действие с этим флагом и другими, когда приходит вызов. После того, как звонок установлен, они больше не нужны и вызывают clearFlags – tamy

+0

могут убрать его немного .. Является ли частью вашего приложения ... –

ответ

1

Хорошо, я понял это. Видимо, я манипулировал представлениями в разных потоках и с настройкой кордовы, исключение не выводилось.

Вызов добавления/очистки Флаги под управлением SIP.this.cordova.getActivity().runOnUiThread(new Runnable() {...}); получили его на работу.

Смежные вопросы