are there anybody know how to getWindow() in servi

2019-02-16 08:25发布

I made a View without Activity by using WindowManager.

but I have to change state of view like below

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

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

but getWindow() can not use in service.

is there a way?

3条回答
Fickle 薄情
2楼-- · 2019-02-16 09:08

What you are trying to do, I gather, is have the service signal that a change should be made in the appearance of an activity. The way to do this is for the service to broadcast an intent using Context.sendBroadcast(Intent) and for your activity to respond in it's onReceive method. The accepted answer in this thread has more details about how to set this up.

查看更多
时光不老,我们不散
3楼-- · 2019-02-16 09:23

You can't get a window in a Service. But you can use WindowManager to add a view(root) as you did already.

And You can also update view through updateViewLayout, you can change your window's status(window type, flag, x, y, w, h, gravity, etc...) like below codes.

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);
查看更多
可以哭但决不认输i
4楼-- · 2019-02-16 09:24

As per Service doesn't have UI, You have to start activity from it to getWindow() attribute..

Either make a Transparent activity or just start activity, getWindow() and immediately finish it.. I think you have to make a transparent activity. (This is my personal opinion)

查看更多
登录 后发表回答