在我的根用戶的Android應用程序,我執行關閉與Android的根關機
su reboot -p
它的工作好,但我注意到,手機關機幾乎立即(從顯示關機動畫反對,可能做其他的事情)。
這是以編程方式關閉android手機的正確方法嗎?是否有一些關鍵代碼需要在關閉之前執行?
在我的根用戶的Android應用程序,我執行關閉與Android的根關機
su reboot -p
它的工作好,但我注意到,手機關機幾乎立即(從顯示關機動畫反對,可能做其他的事情)。
這是以編程方式關閉android手機的正確方法嗎?是否有一些關鍵代碼需要在關閉之前執行?
在Android源代碼,你可以找到以下內容:
/**
* Low-level function turn the device off immediately, without trying
* to be clean. Most people should use
* {@link android.internal.app.ShutdownThread} for a clean shutdown.
*
* @deprecated
* @hide
*/
@Deprecated
public static native void shutdown();
我認爲這個本地函數對應於您su reboot -p
。而且,您可以從引用的代碼註釋中看到,您應該使用ShutdownThread執行乾淨關閉。
在ShutdownThread中,Android做了很多事情。
因此,您可以看到su reboot -p
這是錯誤的。
它不起作用。 – michelemarcon 2012-03-21 13:11:15
你剛剛問過你的方法是否正確。我向你展示了爲什麼這樣做不是一個好習慣。我沒有告訴你'shutdown()'方法適用於你的情況。 – Yury 2012-03-21 14:27:53
我已經接受了你的回答,但是我的問題暗示了「應該關機的最佳做法是什麼?」,但沒有人能夠回答這個問題...... :( – michelemarcon 2012-03-22 13:44:19
在這裏看到: http://developer.android.com/reference/android/os/PowerManager.html
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
pm.reboot("Because I want you to reboot!")
這應該工作。
對不起,我剛發現,它只適用於被簽名爲「系統應用程序」而不是用戶應用程序的應用程序。 (只有當您知道固件簽名的密鑰時纔有可能) – devsnd 2012-03-07 11:39:10
這不起作用,因爲沒有第三方應用程序有權這樣做。 – 2016-06-06 00:20:46
您的應用程序不需要作爲系統應用程序安裝,但它必須具有root權限。你可以簡單地以關閉設備運行此命令一個以root身份:
svc power shutdown
我感謝炎魔他的回答elsewhere這啓發了我發現這個shell命令的存在。
我認爲這會做一個優雅的關機,但我不確定。也許它會做一個突然關機。請測試,然後edit this answer澄清。
此外,上述shell命令在Android 4.2.2或更低版本中不起作用。 help text沒有提到它。 svc
拒絕將該命令視爲無效,並顯示一些幫助文本以嘗試提供幫助。
如果您的應用紮根,然後運行以下爲根:
am start -a android.intent.action.ACTION_REQUEST_SHUTDOWN
@unforgettableid你的建議的修改既大錯特錯(應用程序不能以root身份運行,最多隻本地傭工),以及相對毫無意義,因爲這是一個4年前的低價值問題,不需要重新審視。 – 2016-06-06 00:21:51
@ChrisStratton:謝謝你糾正我;我修改了我的修改建議。去年2月,GitHub評論者在[GitHub評論](https://github.com/ppareit/Shutdown/issues/4#issuecomment-188899438)中引用了此堆棧溢出線程。我同意GitHub評論者引用這樣一個古老的主題是愚蠢的。不過,他確實參考了它。由於答案如此之久,其他人浪費時間對開源項目做出不理想的承諾。 – unforgettableid 2016-06-06 00:54:34
@ChrisStratton:我做了一次Google搜索,但沒有找到提到'svc power shutdown'解決方案的新線程。如果將來存在這樣的線索,我們應該將這個古老的線索標記爲該新線索的複製品。谷歌似乎給Stack Overflow這麼古老的線程提供如此高的搜索結果排名太糟糕了。也許我們可以在頂部添加一些陳舊內容警告。或者,更好的是,也許我們應該將過時的問題標記爲新的相同問題的重複。 – unforgettableid 2016-06-06 00:54:39