2012-05-02 34 views
7

Có thể tắt điện thoại di động theo chương trình không. đó là với bằng cách sử dụng lệnh su ..Làm thế nào để tắt một điện thoại di động Android theo chương trình?

+0

Có thể trùng lặp. Bạn có câu trả lời ở đây http://stackoverflow.com/questions/3745523/programmatically-switching-off-android-phone –

+1

@MayuMayooresan họ không làm việc cho tôi – Venkat

+0

Bị bỏ qua do chính tả và ngữ pháp kém. – unforgettableid

Trả lời

4

Bạn có thể có thể sử dụng PowerManager để làm cho nó khởi động lại (điều này không đảm bảo rằng nó sẽ khởi động lại - OS có thể hủy bỏ nó):

http://developer.android.com/reference/android/os/PowerManager.html#reboot(java.lang.String)

Nó đòi hỏi sự cho phép khởi động lại:

http://developer.android.com/reference/android/Manifest.permission.html#REBOOT

bạn có thể cũng kiểm tra logcat của bạn khi cố gắng để bật/tắt bàn phím bị khóa, và gửi những gì có?

Bạn không thể thực hiện việc này từ ứng dụng SDK thông thường. Chỉ các ứng dụng được ký bằng khóa ký kết chương trình cơ sở hệ thống mới có thể thực hiện điều này

+0

i donot cần khởi động lại tôi muốn chỉ tắt máy chỉ – Venkat

+0

@Krishnakant Dalal là nó có thể vô hiệu hóa tắt/im lặng lập trình? khi thiết bị bị khóa hoặc mở khóa ?? – rup35h

1

Tôi không thấy bất kỳ sự tương đồng nào với tiêu đề và đoạn mã trong nội dung. Đoạn mã có liên quan với KeyGuardManager được sử dụng để khóa và mở khóa bàn phím.

Để tắt máy, bạn cần sử dụng các lệnh PowerManager hoặc SU. (Trên các thiết bị gốc.)

+0

Có .. Nhưng cho rằng điện thoại di động là bắt nguồn từ. –

2

Đây là mã tôi sử dụng để thực hiện bất kỳ lệnh hệ thống nào.

void shutdown_sys() 
{ 
    Process chperm; 
    try { 
     chperm=Runtime.getRuntime().exec("su"); 
      DataOutputStream os = 
       new DataOutputStream(chperm.getOutputStream()); 

       os.writeBytes("shutdown\n"); 
       os.flush(); 

       chperm.waitFor(); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Gọi chức năng này từ ứng dụng Android của bạn. Nó sẽ hoạt động nếu su có chức năng trong hệ thống của bạn. Hãy cho tôi biết trong trường hợp nó không hoạt động. Tôi không có cơ sở Android sẵn sàng để kiểm tra. Nhưng các công trình tương tự để khởi động lại. Vì vậy, tắt máy cũng là một lệnh shell linux mà ithink sẽ có trong Android là tốt .. Tất cả các tốt nhất

+0

làm thế nào tôi có thể biết su đang làm việc hay không trong hệ thống của tôi? – Venkat

+0

Điện thoại của bạn có bị bắt nguồn từ không? –

+0

xin lỗi tôi không biết ý nghĩa của gốc .. – Venkat

8

Có thể, nhưng bạn cần một thiết bị Android Rooted với truy cập Superuser. Bạn không thể làm điều đó nếu không có Gốc trừ khi ứng dụng của bạn được ký với System Firmware Key. Hãy thử sử dụng đoạn mã sau:

Shutdown:

try { 
    Process proc = Runtime.getRuntime() 
        .exec(new String[]{ "su", "-c", "reboot -p" }); 
    proc.waitFor(); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 

Khởi động lại:

Cùng mã, chỉ cần sử dụng "reboot" thay vì "reboot -p".

[Trên một lưu ý khác: Tôi đọc ở đâu đó rằng các lệnh này không có tác dụng trên thị trường chứng HTC ROM, nhưng chưa khẳng định bản thân mình]

+1

tôi thử mã này tắt máy nhưng khởi động lại phon không tắt máy –

+3

Bạn có chắc là bạn đã sử dụng "reboot -p" và không chỉ "khởi động lại". Ngoài ra xin vui lòng cho chúng tôi biết thiết bị của bạn, phiên bản Android và rom. – Sheharyar

+0

@Sheharyar là nó có thể vô hiệu hóa tắt/im lặng lập trình? khi thiết bị bị khóa hoặc mở khóa ?? – rup35h

0

Nếu thiết bị của bạn bắt nguồn từ sau đó bạn có thể thử bên dưới giải pháp

Shutdown:

try { 
    Process proc = Runtime.getRuntime() 
        .exec(new String[]{ "su", "-c", "reboot -p" }); 
    proc.waitFor(); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 

Restart:

Cùng một mã, chỉ cần sử dụng "reboot" thay vì "reboot -p".

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