package de.devland.masterpassword.ui; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import de.devland.esperandro.Esperandro; import de.devland.masterpassword.base.ui.BaseActivity; import de.devland.masterpassword.prefs.DefaultPrefs; import de.devland.masterpassword.receiver.ClearPasswordReceiver; import de.devland.masterpassword.util.MasterPasswordHolder; /** * Created by David Kunzler on 23.08.2014. */ public abstract class LoginRequiringActivity extends BaseActivity { protected DefaultPrefs defaultPrefs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); defaultPrefs = Esperandro.getPreferences(DefaultPrefs.class, this); if (MasterPasswordHolder.INSTANCE.needsLogin(true)) { this.finish(); this.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } } @Override protected void onResume() { super.onResume(); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(getLogoutPendingIntent()); } @Override protected void onPause() { super.onPause(); if (!MasterPasswordHolder.INSTANCE.needsLogin(false)) { int autoLogoutDuration = Integer.parseInt(defaultPrefs.autoLogoutDuration()); if (autoLogoutDuration > 0) { AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); long triggerTime = System.currentTimeMillis() + 1000 * 60 * autoLogoutDuration; PendingIntent broadcast = getLogoutPendingIntent(); alarmManager.set(AlarmManager.RTC, triggerTime, broadcast); } } } private PendingIntent getLogoutPendingIntent() { Intent intent = new Intent(this, ClearPasswordReceiver.class); return PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); } }