document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. public class AutoLogoutReceiver extends BroadcastReceiver {
  2.     public static final String TYPE_ONE_TIME = "OneTimeAlarm";
  3.     public static final String EXTRA_MESSAGE = "message";
  4.     public static final String EXTRA_TYPE = "type";
  5.     public static final String EXTRA_EVENT = "event";
  6.  
  7.  
  8.     // Siapkan 2 id untuk 2 macam alarm, onetime dna repeating
  9.     private final int ID_ONETIME = 100;
  10.     private final int ID_REPEATING = 101;
  11.  
  12.     public AutoLogoutReceiver() {
  13.     }
  14.  
  15.     @Override
  16.     public void onReceive(Context context, Intent intent) {
  17.         String type = intent.getStringExtra(EXTRA_TYPE);
  18.         String message = intent.getStringExtra(EXTRA_MESSAGE);
  19.         String event = intent.getStringExtra(EXTRA_EVENT);
  20.         String title = "Sesi Telah Berakhir";
  21.         Log.e("TAG", "onReceive: " + event);
  22.         logout(context);
  23.         ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
  24.         List<ActivityManager.RunningTaskInfo> taskList = activityManager.getRunningTasks(10);
  25.         if (!taskList.isEmpty()) {
  26.             showDialog(context, title, message);
  27.         } else {
  28.             logout(context);
  29.         }
  30.     }
  31.  
  32.     private void showDialog(Context context, String title, String message) {
  33.         Intent i = new Intent(context, AlertDialogLogout.class);
  34.         i.putExtra("title", title);
  35.         i.putExtra("message", message);
  36.         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  37.         context.startActivity(i);
  38.     }
  39.  
  40.     private void logout(Context context) {
  41.         Log.e("TAG", "logout: berhasil");
  42.         Intent intent = new Intent(context, Login.class);
  43.         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  44.         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  45.  
  46.         //untuk menghapus session anggota
  47.         SharedPreferences preferences = context.getSharedPreferences(mypreference, Context.MODE_PRIVATE);
  48.         SharedPreferences.Editor editor = preferences.edit();
  49.         editor.clear();
  50.         editor.apply();
  51.         context.startActivity(intent);
  52.     }
  53.  
  54.     public void setOneTimeAlarm(Context context, String type, String event, String date, String time, String message) {
  55.         String DATE_FORMAT = "yyyy-MM-dd";
  56.         String TIME_FORMAT = "HH:mm";
  57.         if (isDateInvalid(date, DATE_FORMAT) || isDateInvalid(time, TIME_FORMAT)) return;
  58.         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  59.         Intent intent = new Intent(context, AutoLogoutReceiver.class);
  60.         intent.putExtra(EXTRA_MESSAGE, message);
  61.         intent.putExtra(EXTRA_TYPE, type);
  62.         intent.putExtra(EXTRA_EVENT, event);
  63.         Log.e("ONE TIME", date + " " + time);
  64.         String[] dateArray = date.split("-");
  65.         String[] timeArray = time.split(":");
  66.         Calendar calendar = Calendar.getInstance();
  67.         calendar.set(Calendar.YEAR, Integer.parseInt(dateArray[0]));
  68.         calendar.set(Calendar.MONTH, Integer.parseInt(dateArray[1]) - 1);
  69.         calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateArray[2]));
  70.         calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(timeArray[0]));
  71.         calendar.set(Calendar.MINUTE, Integer.parseInt(timeArray[1]));
  72.         calendar.set(Calendar.SECOND, 0);
  73.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ID_ONETIME, intent, 0);
  74.         if (alarmManager != null) {
  75.             alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
  76.         }
  77.     }
  78.  
  79.     public boolean isDateInvalid(String date, String format) {
  80.         try {
  81.             DateFormat df = new SimpleDateFormat(format, Locale.getDefault());
  82.             df.setLenient(false);
  83.             df.parse(date);
  84.             return false;
  85.         } catch (ParseException e) {
  86.             return true;
  87.         }
  88.     }
  89.  
  90.     public void cancelAlarm(Context context, String type) {
  91.         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
  92.         Intent intent = new Intent(context, AutoLogoutReceiver.class);
  93.         int requestCode = type.equalsIgnoreCase(TYPE_ONE_TIME) ? ID_ONETIME : ID_REPEATING;
  94.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);
  95.         pendingIntent.cancel();
  96.  
  97.         if (alarmManager != null) {
  98.             alarmManager.cancel(pendingIntent);
  99.         }
  100.     }
  101. }
');