2012-09-17 72 views
0

我已設置權限:重新啓動Android設備清單中的運行4.0

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

我撥打以下行來重啓動設備:

Intent intent = new Intent(Intent.ACTION_REBOOT); 
sendBroadcast(intent); 

因爲我在模擬器root權限,我好奇我爲什麼遇到以下錯誤:

Permission Denial: not allowed to send broadcast android.intent.action.REBOOT from pid=963, uid=10046 

回答

2

REBOOT權限只授予具有平臺簽名或作爲系統應用程序。

作爲root可能允許您以root身份運行命令,但您的應用程序仍然不是。 (雖然你可以sudo調用關機命令,但)

+0

你有什麼建議獲得自定義MOD到一個仿真器,因此我的應用程序具有相同簽名證書的操作系統嗎? –

0

如果有人仍在尋找,我們確實在談論根植設備,請閱讀this answer

下面的代碼示例應該這樣做(每個請求添加):

Process rebootProcess = null; 
try 
{ 
    rebootProcess = Runtime.getRuntime().exec("su -c reboot now"); 
} 
catch (IOException e) 
{ 
    // Handle I/O exception. 
} 

// We waitFor only if we've got the process. 
if (rebootProcess != null) 
{ 
    try 
    { 
     rebootProcess.waitFor(); 
    } 
    catch (InterruptedException e) 
    { 
     // Now handle this exception. 
    } 
} 
相關問題