2013-04-07 5 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(); 
} 

을 그리고 다음 일에, 내 안드로이드 깨어하지 않습니다 버튼을 한 번 깜박하고 모든입니다. 어디서 실수입니까?

나는 안드로이드를 깨우고 결과에서 어떤 활동을하고 싶다. 고마워. 당신이 이러한 플래그를 추가 할 수 있습니다 보여주고 싶은 활동에

답변

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에 Flags를 추가하기 만하면 시작할 때마다 KeyGuard와 Lock이 전화기에서 완전히 제거됩니다.