如何以编程方式打开屏幕(2014)

时间:2014-09-26 17:19:30

标签: android

我开发了一款可在智能手机收到短信时自动加载的应用程序。

问题是,如果屏幕的手机关闭或者黑色"模式,当SMS到达时,App不会加载。我需要我的应用程序以编程方式打开屏幕。那可能吗?我找到了几个过去的答案,但没有人工作过。

我试过了:

WindowManager.LayoutParams params =
                getWindow().getAttributes();
                params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                params.screenBrightness = 0;
                getWindow().setAttributes(params);

并尝试过:

super.onCreate(savedInstanceState);
setContentView(R.layout.my_main_activity);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

修改

我尝试过建议:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

但奇怪的是Android Studio给了我错误:

Cannot resolve symbol 'FLAG_SHOW_WHEN_LOCKED'

enter image description here

2 个答案:

答案 0 :(得分:1)

不是KEEP_SCREEN_ON,而是FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ON

Window window = this.getWindow();
window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);

确保您使用WindowManager.LayoutParams

答案 1 :(得分:0)

除了@ 323go的优秀答案,我了解到:

  • 应在build.gradle中设置适当的SDK或API版本

    android {

    signingConfigs {
        config {
        }
    }
    compileSdkVersion 20
    buildToolsVersion '20.0.0'
    defaultConfig {
        applicationId 'com.calisalasapp'
        minSdkVersion 8
    }
    
  • 应在SDK Manager中安装所有适当的API版本