2015-01-20 3 views
8

Я использовал этот ответ для достижения режима киоска для моего приложения: https://stackoverflow.com/a/26013850Могу ли я отключить systemui Из моего приложения для Android?

Я укорененные планшет с Kingo Root, а затем выполняются следующие команды:

adb shell > 
su > 
pm disable com.android.systemui > 

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

Это отлично работает. Но я хотел бы отключить и включить систему ui из самого приложения Android.

Возможны ли системные команды из приложения?

+0

Безопасно ли отключать com.android.systemui или может произойти что-то плохое на некоторых устройствах? – JohnyTex

+2

@JohnyTex: Это особый случай, когда я нуждался в пользователях, чтобы НЕ иметь возможность делать что-либо, кроме моего приложения. Устройство принадлежало моей компании и помещалось в киоски. Это сделало практически невозможным выход из любого приложения, в котором вы были, поскольку больше не было кнопки «home button», «back button» или «drop down». – silversunhunter

+0

Я пришел в ситуацию, когда отключить systemui не помогло - все равно побежал, хотя был отключен. См. Http://android.stackexchange.com/questions/119508/app-is-running-even-though-disabled-why Как он может работать при отключении? – JohnyTex

ответ

14
/** 
* Uses Root access to enable and disable SystemUI. 
* @param enabled Decide whether to enable or disable. 
*/ 
public void setSystemUIEnabled(boolean enabled){ 
    try { 
     Process p = Runtime.getRuntime().exec("su"); 
     DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
     os.writeBytes("pm " + (enabled ? "enable" : "disable") 
       + " com.android.systemui\n"); 
     os.writeBytes("exit\n"); 
     os.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Работы хорошо. Использование:

setSystemUIEnabled(true); // Enable SystemUI 
setSystemUIEnabled(false); // Disable SystemUI 
+0

Я собираюсь попробовать это, но у меня есть один вопрос. Будучи тем, что я использую корневое программное обеспечение, созданное для манекенов (доступ с одним щелчком root), мне интересно, есть ли способ для этого класса узнать, имеет ли он корневой доступ или нет. – silversunhunter

+0

Еще один вопрос: должно ли оно быть (логическое "включено") ??? – silversunhunter

+1

Вы можете использовать эту функцию, вызвав setSystemUIEnabled (true); где-то в вашем коде. Просто протестировал его, работая нормально. Определяется, если есть root acces, объясняется [здесь] (http://stackoverflow.com/a/8097801/4193263). Пожалуйста, примите этот ответ, если он вам поможет. – ByteHamster

Смежные вопросы