Скрыть системную панель в планшете Jelly Bean (с root-правами)

У меня есть Android Jelly Bean Tablet, который был рутирован и пытается запустить приложение с кодом для скрытия системной панели, но оно не скрывается, может ли кто-нибудь помочь мне в этом.

Получение вывода в терминале: Result Parcel(00000000 '....')

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button hide=(Button)findViewById(R.id.button1);
        Button show=(Button)findViewById(R.id.button2);
        hide.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 Log.v("ds", "hideSystembar");
                    try {
                        Process proc = Runtime.getRuntime().exec(new String[]{
                                "su","-c","service call activity 79 s16 com.android.systemui"});
                        proc.waitFor();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        });
        show.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                  Log.v("f", "showSystembar");
                    try {
                        Process proc = Runtime.getRuntime().exec(new String[]{
                                "am","startservice","-n","com.android.systemui/.SystemUIService"});
                        proc.waitFor();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        });
    }
} 

Хотя я получаю уведомление о разрешении: введите здесь описание изображения

Снимок экрана журнала суперпользователя: введите здесь описание изображения


person Gaurav Chawla    schedule 19.11.2012    source источник


Ответы (2)


Идентификатор процесса для класса SystemUI изменился с 79 на 42, когда была введена ICS.
Приведенный ниже код работает для любой версии Android, на которой может работать ваше приложение.

//HIDE TOOLBAR
try{
    //REQUIRES ROOT
    Build.VERSION_CODES vc = new Build.VERSION_CODES();
    Build.VERSION vr = new Build.VERSION();
    String ProcID = "79"; //HONEYCOMB AND OLDER

    //v.RELEASE  //4.0.3
    if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){
        ProcID = "42"; //ICS AND NEWER
    }

    //REQUIRES ROOT
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79
    proc.waitFor();

}catch(Exception ex){
    Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
person Rob    schedule 17.12.2012
comment
Большое спасибо, сэр, это сработало для меня .. !! Поскольку константа processId была главной проблемой..!! - person Gaurav Chawla; 24.12.2012
comment
Привет. Будьте осторожны, я тестировал устройство, на котором скрытие нижней панели таким образом могло привести к тому, что обои программы запуска стали полностью черными! (Слава богу, живые обои не пострадали.) Поэтому, изучив исходный код HideBar, прежде чем скрывать бар, мы должны получить обои Drawable из WallpaperManager. После скрытия панели и ожидания некоторой задержки (обязательно?), нам нужно установить обои Bitmap с обоев Drawable с помощью wallpaperManager.setBitmap(bitmap). Также не забудьте установить разрешениеandroid.permission.SET_WALLPAPER) - person Yeung; 22.01.2013
comment
Просто более простой способ сделать ProcId (со статическим импортом): import static android.os.Build.VERSION.SDK_INT; импортировать статический android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH; // в коде String ProcID = (SDK_INT ›= ICE_CREAM_SANDWICH) ? 42 : 79; - person pablisco; 23.07.2013
comment
Кто-нибудь может сказать мне, как я теперь могу показать системную панель? :) - person 3akat; 24.04.2015
comment
Как вы собираетесь ВКЛЮЧИТЬ его после использования приведенного выше кода? - person Michael Tolsma; 27.10.2020

Я написал статью, в которой объясняется, как получить root-права и скрыть/показать системную панель даже на Android 4.2.

http://masashi-k.blogspot.com/2013/09/hide-show-system-bar-of-android.html

Получите root-права с помощью библиотеки RootTools. введите здесь описание изображения

Скрыть системную панель введите здесь описание изображения

person wf9a5m75    schedule 20.09.2013