重启android手机(模拟器)?

时间:2012-05-25 10:34:41

标签: android shell android-emulator

我想在按下按钮时重启手机。为此我写了这些..

        PowerManager pm;
        public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);        
           pm = (PowerManager) getSystemService(Context.POWER_SERVICE);        
           Button test = (Button) findViewById(R.id.button1);

           test.setOnClickListener(new OnClickListener() {          
        public void onClick(View v) {

            try {
                Process proc = Runtime.getRuntime().exec(new String[] {"su", "-c", "reboot" });

                            int result = proc.waitFor();
                Toast.makeText(ForTestActivity.this, "INt:"+result, Toast.LENGTH_SHORT).show();


            } catch (Exception ex) {
                Log.i("XXXXXXXXXXXX", "Could not reboot", ex);
            }

        }
    });

} 

这在模拟器中不起作用。我正在使用android2.3.3来开发这个应用程序。 它没有给出任何错误,按下按钮后没有任何反应。 吐司将结果显示为1。

之后我也尝试了这段代码..

     Process p = Runtime.getRuntime().exec("su");
                DataOutputStream os = new DataOutputStream(p.getOutputStream());            
                os.writeBytes("reboot"+"\n");                             
                os.writeBytes("exit\n");  
                os.flush(); 

同样的结果。我也添加了必要的权限。有人有任何想法吗?

[不知怎的,我想按下按钮后重启(或关机)手机。]

2 个答案:

答案 0 :(得分:1)

提出了类似的问题并回答here。在您使用固件密钥签名之前,无法重新启动无根电话。

答案 1 :(得分:1)

您是否在没有“su -c”的情况下尝试了上述命令?

当我输入“adb shell reboot”时,我的手机会重新启动(但我的手机 rooted ,在这种情况下需要),所以我认为如果你只是从代码执行“rebo​​ot”,效果应该相似。我认为“su -c”是不必要的,因为您已经在root电话上拥有root权限(默认情况下IIRC模拟器已植根)。

正如其他人所说,这对无根电话无效。