Intereting Posts

Есть ли кто-нибудь знает, как getWindow () в службе на Android?

Я сделал вид без активности с помощью WindowManager.

Но я должен изменить состояние зрения, как показано ниже

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

Но getWindow () не может использоваться в сервисе.

Есть ли способ?

Solutions Collecting From Web of "Есть ли кто-нибудь знает, как getWindow () в службе на Android?"

Вы не можете получить окно в Сервисе. Но вы можете использовать WindowManager для добавления представления (root), как вы уже делали.

Вы также можете обновить представление через updateViewLayout , вы можете изменить статус своего окна (тип окна, флаг, x, y, w, h, гравитация и т. Д.), Как показано ниже.

 private WindowManager mWindowManager; private WindowManager.LayoutParams mLayoutParams; .......... //let's assume that an event occurred if(mConfiguration.orientation==Configuration.ORIENTATION_LANDSCAPE){ mLayoutParams.screenOrientation=Configuration.ORIENTATION_PORTRAIT; } mLayoutParams.softInputMode=WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN; mLayoutParams.gravity = Gravity.TOP|Gravity.CENTER; int flag=0 |WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM ; mLayoutParams.flags=flag; mWindowManager.updateViewLayout(mRootView, mLayoutParams); 

В соответствии с Сервисом нет пользовательского интерфейса, вы должны начать с него активность, чтобы получить атрибут getWindow ().

Либо сделайте прозрачную деятельность, либо просто начните деятельность, getWindow () и сразу закончите ее. Думаю, вам нужно сделать прозрачную деятельность. (Это мое личное мнение)

Полагаю, что вы пытаетесь сделать, что сигнал службы должен быть внесен в вид деятельности. Способ сделать это заключается в том, чтобы служба транслировала намерение с использованием Context.sendBroadcast(Intent) и для вашей активности, чтобы ответить в методе onReceive . В принятом ответе в этом потоке содержится более подробная информация о том, как настроить это.