【发布时间】:2018-03-28 22:20:31
【问题描述】:
我是 android 开发的新手。我有方法使用浮动小部件中的开关控件保持屏幕开启。
public void onSwitchClick(View view) {
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) { // The switch is enabled
//int flag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
//mLayoutParams.flags=flag;
//mWindowManager.updateViewLayout(mFloatingWidgetView.getRootView(), mLayoutParams);
//getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Toast.makeText(getApplicationContext(), "ON",
Toast.LENGTH_SHORT).show();
} else { // The switch is disabled
Toast.makeText(getApplicationContext(), "OFF",
Toast.LENGTH_SHORT).show();
}
}
});
}
当用户点击开关时,它应该保持屏幕开启。我已经阅读了许多关于 WakeLock、Flags 的答案,但没有一个解决方案对我有用。当我按下打开开关时,应用程序崩溃了。请注意,此方法在服务中,并且 Toast 消息可以正常工作。非常感谢您的帮助。
以下代码段不提供任何编译错误,但在运行时不起作用。
int flag = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
mLayoutParams.flags=flag;
mWindowManager.updateViewLayout(mFloatingWidgetView.getRootView(), mLayoutParams);
【问题讨论】:
标签: android service widget flags floating