2014-09-26 73 views
0

我开发了一款应用程序,可在智能手机收到短信时自动加载。如何以编程方式打开屏幕(2014)

问题是,如果屏幕手机处于关闭状态或处于“黑色”模式,则在SMS到达时不会加载应用程序。我需要我的应用程序以编程方式打开屏幕。那可能吗?我发现了几个过去的答案,但没有人工作。

我想:

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); 

但STR安格伊Android Studio中给我的错误:

Cannot resolve symbol 'FLAG_SHOW_WHEN_LOCKED' 

enter image description here

+0

'2014'是什么? – 2014-09-26 19:46:07

+0

因为我发现的几个答案是从2011年和2012年。我不知道这些是否因为更新的Android版本而过时。 – Delmonte 2014-09-26 20:17:22

+0

你的目标API是什么?从API 5开始,FLAG_SHOW_WHEN_LOCKED就已经存在了,所以Studio不太可能抱怨这一点。此外,'Turn_Screen_On'方法的名称(除了它不是小写,每个约定),让我想知道你是如何尝试使用它的。你不应该调用这个...窗口标志应该在'onCreate()'中设置,所以无论何时你调出Activity,它都会打开屏幕,如果关闭的话。 – 323go 2014-09-26 21:03:14

回答

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

+0

Android Studio向我显示错误:无法解析符号'FLAG_SHOW_WHEN_LOCKED'....我应该设置的任何导入? – Delmonte 2014-09-26 17:38:20

+0

确保你使用'WindowManager.LayoutParams'。 – 323go 2014-09-26 18:42:43

0

除了@ 323go的出色答卷,我才知道:

  • 相应的SDK或API的版本应该是建立在的build.gradle

    的Android {

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