有没有人知道如何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更新视图,你可以改变你的窗口的状态(窗口types,标志,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); 

根据服务没有UI,你必须从它开始活动getWindow()属性..

要么做一个透明的活动,只要开始活动,getWindow(),并立即完成它。我认为你必须做一个透明的活动。 (这是我个人的意见)

我收集到的,你所要做的是有一个服务的信号,表明一个活动的外观应该改变。 这样做的方式是服务使用Context.sendBroadcast(Intent)广播意图,并让您的活动响应onReceive方法。 在这个线程中接受的答案有更多关于如何设置的细节。