2011-04-12 7 views

Répondre

1

applications SDK normales ne peuvent pas faire des téléphones pour arrêter ou redémarrer. Seules les applications faisant partie du microprogramme (c'est-à-dire, signées par la clé de synchronisation du microprogramme) peuvent détenir l'autorisation appropriée et effectuer ces actions.

1

Je n'ai pas essayé cela, et je pense qu'il y a (et devrait être) beaucoup de restrictions sur le redémarrage du code. Mais vous pouvez essayer de vérifier l'autorisation:

<uses-permission android:name="android.permission.REBOOT" /> 

et de here je vous ai lu pourriez avoir besoin des trucs sans papier supplémentaire:

Intent i = new Intent(Intent.ACTION_REBOOT); 
i.putExtra("nowait", 1); 
i.putExtra("interval", 1); 
i.putExtra("window", 0); 
sendBroadcast(i); 

prendre connaissance spéciale de la phrase dans ce lien:

Non seulement il n'est pas dans les documents API, mais parce que comme vous le dites, vous devez être signé avec le cert de la plate-forme, vous pouvez N'utilisez cette fonction que si vous utilisez un périphérique dont vous avez construit le logiciel système .

0

Dans les documents android SDK, je vois une note sur le Intent.ACTION_REBOOt. Il dit: «C'est une intention protégée qui ne peut être envoyée que par le système». Je pense que vous n'avez pas le privilège d'utiliser cette intention pour redémarrer le périphérique pour des raisons de sécurité.

0

Regardez ceci. Cependant, vous devez installer busybox.

public static boolean selfShutdown() { 
    boolean bOK = false; 
    String telnetCmd = "busybox telnet 10.0.2.2 5554"; 
    String cmd = "kill"; 

    try { 
     String out = String.format("telnetCmd=%s", telnetCmd); 
     Log.i(TAG+".selfShutdown", out); 
     Process p = Runtime.getRuntime().exec(telnetCmd); 
     DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
     String command = String.format("%s\n", cmd); 
     os.writeBytes(command); 
     os.flush(); 
     out = String.format("%s", "complete os.flush()"); 
     Log.i(TAG+".selfShutdown", out); 
     p.waitFor(); 
     out = String.format("%s", "complete p.waitFor()"); 
     Log.i(TAG+".selfShutdown", out); 
     bOK = true; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 

    return bOK; 
} 
Questions connexes