Lockscreen отображается между действиями

Я работаю над приложением киоска, которое может запускать другие приложения для Android. Он работает поверх блокирующего экрана. Проблема, которую я вижу, заключается в том, что lockscreen отображается кратко между действиями. Мы должны держать планшет заблокированным, поэтому разблокировка не является вариантом.

Я смог воспроизвести это с помощью супер простого случая. Оба действия почти идентичны. Приложение является администратором устройства и может отображаться над клавиатурной защитой. Я также попытался не использовать finish() вообще, но это не устранило проблему.

public class MainActivity extends Activity {

    private Handler h = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button bneg1 = (Button) findViewById(R.id.bneg1);
        bneg1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                h.post(new Runnable() {
                    @Override
                    public void run() {
                        Intent i = new Intent(MainActivity.this, SecondActivity.class);
                        startActivity(i);
                        finish();
                    }
                });
            }
        });
    }
}

Как я могу запустить другое действие без его кратковременного отображения экрана блокировки?

Ответ 1

Как я могу запустить другое действие без его кратковременного отображения сначала заблокировать экран?

Более простой способ достичь этого будет состоять в том, что перед запуском activity-1 будет запущен фиктивный (простой просмотр). Таким образом, когда вы закончите activity-1, dummy-activity возьмет верх, а затем activity-2 выйдет на передний план.

Вы, скорее всего, также должны будете сообщить системе, чтобы она не предоставляла анимацию окна. Сделайте это, добавив это в свою тему приложения:

<item name="android:windowAnimationStyle">@null</item>