2012-05-02 5 views
7

Можно ли программно выключить мобильный телефон. то есть с помощью команды отъезда су ..Как отключить Android-программу программно?

+0

Возможный дубликат. У вас есть ответ здесь http://stackoverflow.com/questions/3745523/programmatically-switching-off-android-phone –

+1

@MayuMayooresan они не работают для меня – Venkat

+0

Сокращенный из-за плохой орфографии и грамматики. – unforgettableid

ответ

4

Вы могли бы использовать PowerManager, чтобы сделать его перезагрузки (это не гарантирует, что она будет перезагрузиться - ОС может отменить его):

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

Это требует разрешения REBOOT:

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

вы можете также проверить свой LogCat при попытке включения/выключения блокировки клавиатуры, и после того, что там?

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

+0

Мне не нужна перезагрузка. Я хочу только завершить только – Venkat

+0

@ Krishnakant Dalal можно отключить программный отключение/молчание? когда устройство заблокировано или разблокировано? – rup35h

1

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

Для выключения телефона вам понадобятся команды PowerManager или SU. (На корневых устройствах.)

+0

Да .. Но с учетом того, что мобильный движется. –

2

Это код, который я использую для выполнения любой системной команды.

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

Вызовите эту функцию из своего приложения для Android. Он будет работать, если su работает в вашей системе. Сообщите мне, если он не работает. У меня нет базы Android, готовой к тестированию. Но то же самое работает для перезагрузки. Таким образом, shutdown также является командной оболочкой Linux, которая также будет присутствовать в Android. Все самое лучшее

+0

Как я могу знать, что su работает или нет в моей системе? – Venkat

+0

Является ли ваш телефон укоренен? –

+0

жаль, что я не знаю, что означает корень .. – Venkat

8

Возможно, но вам необходимо устройство Android Rooted с доступом Superuser. Вы не можете сделать это без Root, если ваше приложение не подписано с System Firmware Key. Попробуйте использовать следующий код:

Shutdown:

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

Reboot:

же код, просто использовать "reboot" вместо "reboot -p".

[На другой ноте: я где-то читал, что эти команды не работают на дисках со HTC, но не подтвердили себя]

+1

Я пробовал этот код выключения, но его перезагрузка не была отключена. –

+3

Вы уверены, что используете «reboot -p», а не только «перезагружаетесь». Также сообщите нам свое устройство, версию для Android и ролик. – Sheharyar

+0

@Sheharyar можно отключить программный вызов shutdown/silent? когда устройство заблокировано или разблокировано? – rup35h

0

Если ваше устройство коренится, то вы можете попробовать ниже решение

Shutdown:

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

Restart:

Тот же код, просто используйте "reboot" вместо "reboot -p".

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