Есть ли возможность скрыть значок клавиши возврата с панели навигации в режиме блокировки / киоска на 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.