2012-11-01 15 views
9

Chcę zrobić jak poniżej:Jak rozpocząć działalność po odblokowaniu btn naciśnij i przed ekranem odblokowania pojawi się?

Naciśnij przycisk "Odblokuj". Po naciśnięciu przycisku odblokowującego aktywowana jest moja aktywność. Po zakończeniu mojej aktywności za pomocą przycisku Zamknij na ekranie zachęcam użytkownika do wprowadzenia blokady wzoru (lub blokady PIN). po wejściu pojawia się ekran główny z prawą blokadą wzoru.

Chcę poniżej scenariusz:

nacisnąć przycisk zasilania/odblokowania -> początek mojej działalności -> kliknij przycisk zamykania działalności -> szybka podać wzór do odblokowania -> wprowadzić wzór -> Ekran główny wyświetlacz

Obecnie Sporządzono jak poniżej:

Korzystanie odbiornik radiowy z ACTION_USER_PRESENT mam aktywność po użytkownikiem podać wzór & urządzenie jest odblokować

Korzystanie odbiornik radiowy z ACTION_SCREEN_ON, Mam msg w dzienniku po naciśnięciu przycisku odblokowania, ale aktywność rozpoczyna się po wprowadzeniu przez użytkownika wzoru & urządzenie jest odblokowane.

Próbuję użyć odbiornika Broadcast do odbioru wydarzeń o numerach ACTION_SCREEN_ON i ACTION_USER_PRESENT.

mojego kodu jest jak poniżej:

Broadcast Receiver -

public class BrodcastReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("receiver", "main"); 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
     { 
      // do whatever you need to do here 
      Log.d("receiver", "screen off"); 
     } 
     else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) 
     { 
      // and do whatever you need to do here 
      Log.d("receiver", "screen on"); 
      context.startActivity(new Intent(context, 
        unlock_image.class) 
        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
        .setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) 
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
      Log.d("receiver", "aft activity"); 
     } 
     else if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) 
     { 
      Log.d("receiver", "unlock"); 

      context.startActivity(new Intent(context, 
        unlock_image.class) 
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 
     }  
    } 

Rejestracja Broadcast Listner -

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
     filter.addAction(Intent.ACTION_USER_PRESENT); 
     BroadcastReceiver mReceiver = new BrodcastReceiver(); 
     registerReceiver(mReceiver, filter); 

Staram dużo, ale nie mogę dostać to, co chcę. Każda pomoc jest doceniana, jeśli ktoś ma pomysł, Jak uzyskać oczekiwany wynik, jak chcę.

Odpowiedz

2

Spróbuj dodać WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED do uruchomienia swojej aktywności, spowoduje to tymczasowe wyłączenie blokady klawiatury/klawiatury, o ile twoja aktywność jest nad wszystkimi innymi oknami.