刷新窗口小部件的显示?

我试图从一个小部件设置屏幕亮度。 我们知道这很容易,因为吨的小部件已经这样做,但是怎么…..

在我从窗口部件调用的服务中,我这样做来设置亮度:

Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200); 

除了不刷新屏幕以应用新的设置之外,这样做效果很好。 closures和closures屏幕会刷新显示设置,因此我们知道代码正常工作。

我也在几个网站上看到,像这样的东西会刷新屏幕,但我们不能使用这个,因为我们在一个小部件。 小部件活动和服务不能使用getWindow。

 WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 100 / 100.0f; getWindow().setAttributes(lp); 

所有这些小工具,如美丽的小工具,电源控制,扩展控件等,如何做到这一点呢?

更新:另一个海报推荐踢空的活动,并执行WindowManager刷新。 这很有效,但是第二秒就会出现一个丑陋的黑屏。 由于其他小工具不这样做,必须有一种方法来保持不显示空白的黑屏。

Solutions Collecting From Web of "刷新窗口小部件的显示?"

对于黑屏,在活动上设置一个主题,包含以下内容:

 <style name="Theme.Transparent" parent="android:Theme"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item> </style> 

感谢塞巴斯蒂安的答案,我把它复制在这里。

改变屏幕亮度系统设置Android无耻的复制和粘贴

 android:theme="@android:style/Theme.Translucent.NoTitleBar" 

做这一切。