я должен заблокировать строку состояния и домашнюю панель навигации. я использовал код ниже, чтобы заблокировать его

 private void hideSystemUI() {

 View decorView = getWindow().getDecorView();

 int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
 | View.SYSTEM_UI_FLAG_IMMERSIVE;

  decorView.setSystemUiVisibility(uiOptions);
   }

а также:

@Override

public void onWindowFocusChanged(boolean hasFocus)
{

 super.onWindowFocusChanged(hasFocus);

  View decorView = getWindow().getDecorView();

  decorView.setOnSystemUiVisibilityChangeListener( 
        newView.OnSystemUiVisibilityChangeListener() {

         @Override

         public void onSystemUiVisibilityChange(int i) {

            if (i == View.VISIBLE){
                hideSystemUI();
            }
            else {
                hideSystemUI();
            }
        }
    });

также написал код hidesystemUI() в onCreate() и onResume(), в том числе с decorView.setOnSystemUiVisibilityChangeListener(). Так что я должен заблокировать его. Как только я прокручиваю вверху, он возвращается и уходит (как мигание). Но я должен его заблокировать. После того, как мы проведем пальцем вверх, он не должен появиться. помогите мне выбраться из этого.


person Govindu Satish    schedule 19.12.2017    source источник
comment
проверьте это, stackoverflow.com/questions/29969086/   -  person notTdar    schedule 19.12.2017


Ответы (1)


Если вы не хотите, чтобы он мигал, вы можете отложить скрытие. Например, вы можете задать задержку в 2 секунды на Handler.postDelayed().

private void hideSystemUI() {
    final int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
            | View.SYSTEM_UI_FLAG_IMMERSIVE;

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            getWindow().getDecorView().setSystemUiVisibility(uiOptions);
        }
    }, 2000); //2 seconds delay
}

Если вы всегда вызываете это в основном потоке, вы можете просто вызвать new Handler(), чтобы вернуть обработчик в основном потоке. В противном случае вам нужно будет позвонить new Handler(Looper.getMainLooper()).

person Siu    schedule 19.12.2017
comment
Извините, Сиу, это не точное решение, которое я ищу. Но я понял, что заблокировать системный интерфейс навсегда невозможно, и это возможно только для системных приложений. Поэтому я нашел другой способ для этого - спасибо. - person Govindu Satish; 05.01.2018
comment
Без проблем! Я думал, тебе просто не нравится, что он мигает. Рад, что вы нашли решение! :) - person Siu; 05.01.2018
comment
Знаете ли вы, как получить имя, номер мобильного телефона и фотографию из любимых контактов. - person Govindu Satish; 05.01.2018
comment
Вот официальное руководство по получению контактов. Вы можете обратиться к этому ответу, чтобы получить только избранные контакты. Обратите внимание, что запрос использует ContactsContract.Contacts.STARRED=1 . Вы можете проверить, есть ли у контакта номер телефона, добавив ContactsContract.Contacts.HAS_PHONE_NUMBER в поле проекции запроса. Затем вы можете получить номера телефонов по идентификатору, как показано здесь. - person Siu; 05.01.2018
comment
ссылка ... один раз проверьте ссылку, пожалуйста, мой обновленный код и вопрос. - person Govindu Satish; 05.01.2018
comment
Быстро посмотрел. Не знаю, почему вы используете GROUP_PROJECTION. Я предполагаю, что если вам нужен номер телефона избранного контакта, имя, фотография, проекция должна быть ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER, ContactsContract.Contacts.PHOTO_URI. Посетите эту страницу, чтобы узнать, что вы можете использовать. И, конечно же, соблюдайте критерии выбора, отмеченные звездочкой = 1. - person Siu; 05.01.2018
comment
Большое спасибо, Сиу... Работает отлично... ты спас мой день... :) - person Govindu Satish; 05.01.2018