Есть ли возможность скрыть значок клавиши возврата с панели навигации в режиме блокировки / киоска на Android?

Я делаю приложение Cosu, и оно работает в режиме locktask. Я нашел руководства, чтобы сделать NavigationBar и ActionBar полностью прозрачными и скрытыми, но если пользователь проведет пальцем вниз или вверх по экрану, он покажет кнопку "Назад" в нижней части NavigationBar.

Я добавил фрагмент кода, который снова быстро его скрывает.

/* Hides Navigation bar again if user swipes it visible */
@Override
protected void onResume() {
        getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(
                new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                    getWindow().getDecorView().setSystemUiVisibility(flags);
                    }
                });
    super.onResume();
}

Есть ли способ на самом деле изменить этот значок кнопки назад или его цвет на прозрачный, используя стили или что-то?? Я пытался найти информацию по этому вопросу, но я обнаружил, что я использую дополнительные приложения для изменения изображения кнопки "Назад".

Я могу отключить событие кнопки возврата, используя следующий код, но не скрываю его видимость

@Override
public void onBackPressed() {
     // nothing to do here
}

2 ответа

Вы можете добавить эту зависимость к себе build.gradle(app):

https://github.com/topjohnwu/libsu

      android {
    compileOptions {
        // This library uses Java 8 features, this is required
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    ...
    implementation "com.github.topjohnwu.libsu:core:3.1.1"
    ...
}

После этого добавьте эту строку в свой build.gradle (проект) :

      repositories {
    maven { url 'https://jitpack.io' }
}

Затем вы можете использовать эту функцию, чтобы скрыть все кнопки на панели навигации:

      private fun disable backButtonOnLockTaskMode(){
    Shell.enableVerboseLogging = BuildConfig.DEBUG
    Shell.setDefaultBuilder(
        Shell.Builder.create()
            .setFlags(Shell.FLAG_REDIRECT_STDERR)
            .setTimeout(10)
        ) 
    Shell.su("settings put secure sysui_nav_bar \"space;space;space\"").exec()             
}

С другой стороны, вы можете изменить строку в команде, но успех этой команды зависит от вашей реализации режима задачи блокировки:

  • "space; space; space" : без значков.
  • "пробел; назад; пробел" : только значок "назад".
  • "space;volume_sub,back,volume_add; space" : с кнопками регулировки громкости.

Надеюсь, это вам поможет!

Привет!

Нет, это невозможно, потому что каждый сможет сделать локаторы экрана и вирусы. Вы сможете сделать это только с вашей собственной ОС Android.

Другие вопросы по тегам