Заблокировать приложение Android после определенного времени простоя
Я справился с этим, используя android-api AlarmManager для планирования android-mobile и отмены действия тайм-аута.
Затем android в событии onPause() всех android-sdk моих действий я назначаю android-mobile будильник. В событии onResume() всех android-device моих действий я проверяю, не android срабатывает ли будильник. Если android-sdk сработал будильник, я закрыл android-api приложение. Если будильник android-application еще не сработал, я его отменяю.
Я android-device создал Timeout.java для управления android-device своими будильниками. Когда android-api срабатывает будильник, запускается android-application намерение:
public class Timeout {
private static final int REQUEST_ID = 0;
private static final long DEFAULT_TIMEOUT = 5 * 60 * 1000; // 5 minutes
private static PendingIntent buildIntent(Context ctx) {
Intent intent = new Intent(Intents.TIMEOUT);
PendingIntent sender = PendingIntent.getBroadcast(ctx, REQUEST_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return sender;
}
public static void start(Context ctx) {
ctx.startService(new Intent(ctx, TimeoutService.class));
long triggerTime = System.currentTimeMillis() + DEFAULT_TIMEOUT;
AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC, triggerTime, buildIntent(ctx));
}
public static void cancel(Context ctx) {
AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
am.cancel(buildIntent(ctx));
ctx.startService(new Intent(ctx, TimeoutService.class));
}
}
Затем я создал android-device службу, которая фиксирует android-framework намерение, сгенерированное android-application сигналом тревоги. Он устанавливает android некоторое глобальное состояние android-application в моем экземпляре класса android-device приложения, чтобы указать, что android-ui приложение должно заблокироваться:
public class TimeoutService extends Service {
private BroadcastReceiver mIntentReceiver;
@Override
public void onCreate() {
super.onCreate();
mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ( action.equals(Intents.TIMEOUT) ) {
timeout(context);
}
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(Intents.TIMEOUT);
registerReceiver(mIntentReceiver, filter);
}
private void timeout(Context context) {
App.setShutdown();
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.cancelAll();
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mIntentReceiver);
}
public class TimeoutBinder extends Binder {
public TimeoutService getService() {
return TimeoutService.this;
}
}
private final IBinder mBinder = new TimeoutBinder();
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
Наконец, я android-mobile создал подкласс Activity, который android-mobile является подклассом всех android-api действий моего приложения android-application для управления блокировкой android-api и разблокировкой:
public class LockingActivity extends Activity {
@Override
protected void onPause() {
super.onPause();
Timeout.start(this);
}
@Override
protected void onResume() {
super.onResume();
Timeout.cancel(this);
checkShutdown();
}
private void checkShutdown() {
if ( App.isShutdown() ) {
finish();
}
}
}
Использование android-ui onPause и onResume для запуска android-framework и остановки тайм-аута дает android-ui мне следующую семантику. Пока android-framework одно из действий моего приложения android-sdk активно, часы тайм-аута не android-framework работают. Поскольку я использовал android-api AlarmManager.RTC в качестве android-api типа будильника, каждый раз, когда android-ui телефон переходит в спящий android-framework режим, запускаются часы тайм-аута. Если android-api тайм-аут происходит, когда android-ui телефон спит, моя служба android-mobile заберет тайм-аут, как только android-ui телефон проснется. Кроме android-device того, часы идут, когда открыто android-mobile любое другое действие.
Для android-framework более подробной версии вы android-framework можете увидеть, как я фактически android реализовал их в своем приложении android-mobile https://github.com/bpellin/keepassdroid
android
Заблокировать приложение Android после определенного времени простоя
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.