2014-09-26 72 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管理器中