2012-01-16 2 views
2

Приложение закрывается, когда пользователь прикасается к экрану. Для этого метода на onTouch() У меня естьперезапустите приложение, когда экран выключен

Intent intent = new Intent(getBaseContext(), FinActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
finish(); 

где FinActivity класс это один:

public class FinActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

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

     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(
       this.getApplicationContext(), 234324243, intent, 0); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
       System.currentTimeMillis() + (60 * 1000), 
       System.currentTimeMillis() + (60 * 1000), pendingIntent); 
     finish(); 
    } 

Я хочу перезагрузить приложение, когда экран выключен. У меня есть этот AlarmReceiver класс:

public class AlarmReceiver extends BroadcastReceiver { 

    public static boolean wasScreenOn = true; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      // do whatever you need to do here 
      System.out.println("Screen OFF"); 
      wasScreenOn = false; 

       Intent i = new Intent(context, SplashScreen.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 

     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      // and do whatever you need to do here 
      System.out.println("Screen ONN"); 
      wasScreenOn = true; 
     } 
    } 

} 

, но через 60 секунд я получаю NullPointerException на этой линии: intent.getAction().equals(Intent.ACTION_SCREEN_OFF)

Где моя ошибка? Что я делаю неправильно?

Заранее спасибо.

+0

Работает ли оно, если вы проверяете значение «Intent» и игнорируете его? – Glitch

+0

перезагружает приложение без условия if. – Gabrielle

ответ

2

Если вы просто хотите знать, включен ли ваш экран включен или выключен, вы можете использовать PowerManager класс Андроида это от апи уровня 1 .Вы можете использовать isScreenOn() метод зная статус экран.

Дополнительную информацию можно получить здесь http://developer.android.com/reference/android/os/PowerManager.html.

Смежные вопросы