2013-04-07 8 views
5

、私を助けてください。 私は、ブロードキャストレシーバがあります。どのようにアンドロイドを覚ますとアクティビティを表示するには?

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

をし、それが仕事である、私のアンドロイドが目を覚ますしないでください:ボタンを1回点滅し、それがすべてです。 どこが間違っていますか?

私はアンドロイドの目を覚ますと、結果にいくつかの活動を呼び出したい... ありがとうございました。

答えて

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は」でもPowerManagerとWakelock APIを使用せずに作品を書いたことは注目に値します。単にそれが起動するたびに、活動ののonCreateにフラグを追加することにより は、それは完全に携帯電話からキーガードとロックを削除します。

関連する問題