2015-01-20 26 views
8

tôi đã sử dụng câu trả lời này để đạt được một chế độ Kiosk cho ứng dụng của tôi: https://stackoverflow.com/a/26013850Tôi có thể tắt systemui Từ trong ứng dụng Android của mình không?

tôi bắt nguồn từ chiếc máy tính bảng với Kingo Root và sau đó thực hiện các lệnh sau:

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

Tôi đang xây dựng một ứng dụng mà sẽ chỉ có sử dụng trên các thiết bị của chúng tôi như các kiốt ....

Nó hoạt động tuyệt vời NHƯNG .. tôi muốn thực hiện việc vô hiệu hóa và kích hoạt của ui hệ thống từ các ứng dụng Android riêng của mình.

Are lệnh hệ thống có thể từ bên trong một ứng dụng?

+0

Có an toàn để vô hiệu hóa com.android.systemui hoặc có thể xảy ra sự cố nào đó trên một số thiết bị nhất định không? – JohnyTex

+2

@JohnyTex: Đây là một trường hợp đặc biệt mà tôi cần người sử dụng không có khả năng để làm bất cứ điều gì ngoại trừ sử dụng ứng dụng của tôi. Thiết bị được sở hữu bởi công ty của tôi và được đưa vào các kiốt. Làm điều này khiến bạn gần như không thể thoát khỏi bất kỳ ứng dụng nào bạn đang ở vì không còn nút home, nút quay lại hoặc vùng thả xuống thông báo nữa. – silversunhunter

+0

Tôi đã đến một tình huống mà vô hiệu hóa systemui không giúp-nó vẫn chạy mặc dù bị vô hiệu hóa. Xem: http://android.stackexchange.com/questions/119508/app-is-running-even-though-disabled-why Làm thế nào nó có thể chạy trong khi đang bị vô hiệu hóa? – JohnyTex

Trả lời

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(); 
    } 
} 

Hoạt động tốt. Cách sử dụng:

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

Tôi sắp thử nhưng tôi có một câu hỏi. Được rằng tôi đang sử dụng một phần mềm gốc được thực hiện cho núm vú giả (một cú nhấp chuột root truy cập) Tôi tự hỏi nếu có một cách để lớp này biết nếu nó có quyền truy cập root hay không. – silversunhunter

+0

Một câu hỏi nữa: nên là (boolean "enabled") ??? – silversunhunter

+1

Bạn có thể sử dụng chức năng này bằng cách gọi setSystemUIEnabled (true); một nơi nào đó trong mã của bạn. Chỉ cần thử nghiệm nó, làm việc tốt. Xác định nếu có acces gốc được giải thích [ở đây] (http://stackoverflow.com/a/8097801/4193263). Vui lòng chấp nhận câu trả lời này nếu nó giúp bạn. – ByteHamster

Các vấn đề liên quan