2013-04-07 68 views
5

請幫幫我。 我有一個廣播reciever:如何喚醒android並顯示活動?

public class BrcRec extends BroadcastReceiver{ 
public static WakeLock wakeLock; 
@Override 
public void onReceive(Context context, Intent intent) { 


    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); 
    wakeLock.acquire(); 
    //Осуществляем блокировку 
    KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); 
    keyguardLock.disableKeyguard(); 


    //Здесь можно делать обработку. 
    Bundle extras = intent.getExtras(); 
    StringBuilder msgStr = new StringBuilder(); 

    msgStr.append("Одноразовый будильник: "); 
    Format formatter = new SimpleDateFormat("hh:mm:ss a"); 
    msgStr.append(formatter.format(new Date())); 
    // Creating activity must be there, i think 
    Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show(); 
    //Разблокируем поток. 
    wakeLock.release(); 
} 

,然後將其在工作中,我的Android不要醒來:按鈕閃爍一次,僅此而已。 哪裏出錯?

我要喚醒Android和調用一些活動結果.. 謝謝。

回答

14

在你想展示你能添加這些標誌的活動:

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

這將導致活動以喚醒設備。

2

值得注意的是什麼「joelreeves」所寫的作品即使不使用電源管理器和激活鎖定的API。 通過簡單地在活動的onCreate上添加標誌,無論何時啓動,它都會完全從手機中刪除鍵盤鎖和鎖。