1

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

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

结果相同。我还添加了必要的权限。有人知道吗?

[不知何故,我想在按下按钮后重新启动(或关机)手机。]

4

2 回答 2

1

在这里提出并回答了一个类似的问题。在您拥有固件密钥对其进行签名之前,您无法重新启动无根电话。

于 2012-05-25T10:58:19.233 回答
1

您是否尝试过没有“su -c”的上述命令?

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

正如其他人所提到的,这不适用于无根电话。

于 2012-05-25T11:05:52.697 回答