2016-12-18 12 views
2

Я пытаюсь найти способ запуска приложения, когда телефон разблокируется/включается после X-времени (например, 15 минут). Я собирал идеи и пытался найти способ без серьезных ошибок.Запуск активности при разблокировке/запуске телефона

Я попробовал команду IF, используя

public void onReceive(Context context, Intent intent){ 
KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE); 
if (!keyguardManager.isKeyguardSecure()){ 
    Intent startup = new Intent(MainActivity.this, NextActivity.class);} 

Но NextActivity получает вновь открыт сразу, когда закрыты. Я еще не пробовал добавление таймера, потому что я застрял на этой части около 2 дней, но любые советы, в которые он входил, были бы оценены.

Также я собираюсь добавить команду If перед этой командой, чтобы проверить, есть ли у устройства даже блокировка безопасности, и если код не проверяет, включен ли экран, но я не знаю, t получил это еще далеко.

Извините Если мне не ясно, на что мне нужна помощь, только когда-либо просматривал этот сайт.

ответ

0

Вы можете прослушивать событие System Bootup, а затем запустить таймер для подсчета 15 минут.

Ответ о Bootup получите: BOOTUP

0

Вы можете использовать BroadcastReceiver получить BOOT_COMPLETED вещания. И затем запустите таймер, чтобы подсчитать время Х (15 минут) Проверьте эту ссылку для получения дополнительной информации. Boot Completed

Вы должны дать разрешение в файле манифеста, как

< uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > 

Ваш приемник должен быть как

<receiver 
     android:name="BootReceiver" 
     android:enabled="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

И класс BroadcastReceiver будет как

public class BootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
      // start a timer to count for 15mins 
      // .... 
      // start your luncher activity 
    } 
} 
0

Отслеживайте в последний раз ваша MainActivity перешла на задний план. Когда MainActivity вернется на передний план, проверьте разницу во времени. Если это более 15 минут, отобразите NextActivity.

Например, в вашем MainActivity

@Override 
protected void onPause() { 
    lastTick = System.currentTimeMillis(); 
} 

@Override 
protected void onResume() { 
    if((System.currentTimeMillis() - lastTick) > 900000){//15 minutes 
     Intent intent = new Intent(MainActivity.this, NextActivity.class); 
     startActivityForResult(intent, 0); 
    } 
} 
Смежные вопросы