В моем приложении я разрешаю пользователю покупать приложение на основе разных планов, таких как 2 часа бесплатно, 1 день, 1 неделя и т. Д.
Я не хочу, чтобы пользователь использовал приложение после истечения срока действия. Я создал сервис и установил будильник в основном действии, а в сервисе я сказал, что по истечении времени откройте основное действие.
Код установки будильника в основной деятельности:
private void updateService(){
Intent myIntent = new Intent(DRMActivity.this, AlarmService.class);
pendingIntent = PendingIntent.getService(DRMActivity.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 30);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(DRMActivity.this, "Start Alarm", Toast.LENGTH_LONG).show();
}
код услуги:
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Intent myIntent = new Intent(getBaseContext(), DRMActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Toast.makeText(this, "AlarmService.onStart()", Toast.LENGTH_LONG).show();
getApplication().startActivity(myIntent);
}
Пока все в порядке, даже если моя основная деятельность разрушена, служба может запустить ее снова. Но я думаю, что в Android, к сожалению, приложение построено из нескольких действий, поэтому из действия мы не можем остановить приложение. Что я имею в виду?
У нас есть метод finish (), который прекращает действие, но не может закрыть все приложение. Следовательно, после прекращения действия приложения отобразится предыдущая активность этого приложения.
Итак, вернемся к моей истории. например, через 30 секунд (в соответствии с приведенным выше кодом) служба будет выполнять мою основную деятельность. Но что будет, если пользователь легко нажмет кнопку назад? он / она может вернуться к предыдущей активности приложения и продолжить его использование.
Одним хорошим предложением является создание общих настроек, и в сервисе я меняю флаг, а в onStart () каждого действия проверяю его. Я думаю, что это работает, но плохо то, что я работаю над оболочкой, которую нужно добавить в другие проекты, и я не могу попросить других разработчиков добавить это или проверить это.
Что вы предлагаете? Есть ли способ запретить пользователю продолжать использовать приложение после истечения срока действия?
=======>
UPDATE:
Для дальнейшего использования. Я использовал FLAG_ACTIVITY_CLEAR_TOP , и проблема решена. Теперь, даже пользователь нажимает кнопку «Назад», все действия между Основным действием и Последним действием очищаются. Согласно документации:
Если установлено, и запускаемое действие уже выполняется в
текущей задачи, а затем вместо запуска нового экземпляра этого
деятельность, все остальные виды деятельности будут закрыты и
это намерение будет доставлено (теперь на вершине) старой деятельности как
Новый Намерение.
Например, рассмотрим задачу, состоящую из действий: A, B, C, D.
Если D вызывает startActivity () с намерением, которое разрешается в
компонент деятельности B, то C и D будут завершены, и B получит
заданное намерение, в результате чего стек теперь равен: A, B.