Android ICS關機跟重新啓動功能研究

Android ICS關機跟重新啓動功能研究

 

         最近研究了一下android關機跟重新啓動功能。網上的文章也不少,做法也有一些。筆者試過了幾種方法,下面介紹一下:

  <一>、 Android重啓功能

          在androidjava層執行shell命令來完成。但是筆者在開發測試中同樣的代碼發現用Eng編譯出的版本可以重新啓動,user版本不能完成重啓,掛在關機那個界面。

/*****************************************************************************************************/
聲明:本博內容均由http://blog.csdn.net/sundesheng125原創,轉載請註明出處,謝謝!
/*****************************************************************************************************/

      

       用shell命令,eng版本能完成重新啓動的代碼如下:

String cmd = "su -c reboot";
exeShell(cmd);

   public void exeShell(String cmd){         
           
            try{  
                 Process p = Runtime.getRuntime().exec(cmd);  
                 BufferedReader in = new BufferedReader(  
                                     new InputStreamReader(  
                               p.getInputStream()));   
                 String line = null;    
                 while ((line = in.readLine()) != null) {    
                    Log.i("exeShell",line);                    
                 }    
                   
            }  
            catch(Throwable t)  
             {  
                  t.printStackTrace();  
             }  
             
}

       提示的錯誤是權限問題,但是代碼是一樣的,manifest裏面也給了REBOOT權限,在網上找了一下解釋還是沒有什麼好的解決方案,錯誤信息如下:

01-01 08:05:26.319 W/System.err(  776): java.io.IOException: Error running exec(). Command: [su, -c, reboot] Working Directory: null Environment: null
01-01 08:05:26.319 W/System.err(  776): 	at java.lang.ProcessManager.exec(ProcessManager.java:211)
01-01 08:05:26.319 W/System.err(  776): 	at java.lang.Runtime.exec(Runtime.java:168)
01-01 08:05:26.319 W/System.err(  776): 	at java.lang.Runtime.exec(Runtime.java:241)
01-01 08:05:26.319 W/System.err(  776): 	at java.lang.Runtime.exec(Runtime.java:184)
01-01 08:05:26.319 W/System.err(  776): 	at com.android.settings.DevelopmentSettings.exeShell(DevelopmentSettings.java:591)
01-01 08:05:26.319 W/System.err(  776): 	at com.android.settings.DevelopmentSettings.onPreferenceChange(DevelopmentSettings.java:580)
01-01 08:05:26.319 W/System.err(  776): 	at android.preference.Preference.callChangeListener(Preference.java:885)
01-01 08:05:26.319 W/System.err(  776): 	at android.preference.ListPreference.onDialogClosed(ListPreference.java:265)
01-01 08:05:26.329 W/System.err(  776): 	at android.preference.DialogPreference.onDismiss(DialogPreference.java:381)
01-01 08:05:26.329 W/System.err(  776): 	at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1235)
01-01 08:05:26.329 W/System.err(  776): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 08:05:26.329 W/System.err(  776): 	at android.os.Looper.loop(Looper.java:137)
01-01 08:05:26.329 W/System.err(  776): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
01-01 08:05:26.329 W/System.err(  776): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-01 08:05:26.329 W/System.err(  776): 	at java.lang.reflect.Method.invoke(Method.java:511)
01-01 08:05:26.329 W/System.err(  776): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-01 08:05:26.329 W/System.err(  776): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-01 08:05:26.329 W/System.err(  776): 	at dalvik.system.NativeStart.main(Native Method)
01-01 08:05:26.329 W/System.err(  776): Caused by: java.io.IOException: Permission denied
01-01 08:05:26.329 W/System.err(  776): 	at java.lang.ProcessManager.exec(Native Method)
01-01 08:05:26.339 W/System.err(  776): 	at java.lang.ProcessManager.exec(ProcessManager.java:209)
01-01 08:05:26.339 W/System.err(  776): 	... 17 more
01-01 08:05:26.369 W/InputManagerService(  174): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4138ecb8

 

 

發佈了152 篇原創文章 · 獲贊 486 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章