2013-11-21 167 views
6

即使屏幕鎖定,如何在設備上啓動活動。我嘗試如下,但它不工作。即使屏幕鎖定在Android中,也可以啓動活動屏幕

廣播接收器:

Intent alarmIntent = new Intent("android.intent.action.MAIN"); 
     alarmIntent.setClass(context, Alarm.class); 
     alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     alarmIntent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + 
          WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD + 
          WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + 
          WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     context.startActivity(alarmIntent); 

回答

11

您需要AndroidManifest.xml文件以下權限:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 

檢查清單細節here。您可以在查詢時檢查此link

1

您可以檢查here有關屏幕是鎖定還是解鎖。

然後,您可以使用喚醒鎖定和電源管理選項來保持屏幕不被鎖定。你可以找到幫助here

10

您可以通過兩種方式實現:

  1. 使用喚醒鎖由@Yup在這篇文章中解釋。

  2. 使用窗口標誌。

使用窗口標誌:

打開一個活動要在onReceive(...)啓動。在活動的onCreate()粘貼此一

final Window win= getWindow(); 
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

確保你不將其粘貼之前setContentView(...) :-)

+0

如果我使用第二種方式(使用窗口標誌),我不需要在androidmanifest.xml中請求權限? – Dika

+1

是的,你沒有權限@Dika – Junaid

0
  1. 清單文件賦予權限 使用許可權的android:NAME =「android.permission .WAKE_LOCK」 那裏面寫的代碼在您的要求活動的onCreate()
  2. 最終窗WIN = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);