Android 關機彈出選擇菜單的深入解析

來源:互聯網
上載者:User

在Android系統中,長按Power鍵預設會彈出對話方塊讓你選擇“飛航模式”,“靜音”,“關機”等功能。這些功能對於手機非常適用,但是對於機頂盒產品就沒有什麼必要了。
本文簡單介紹一下怎樣定製關機介面。
我的目標是長按Power鍵,將會關機,彈出“裝置將要關機”選擇對話方塊。如果可以選擇“是”關機,和“否”返回系統。
彈出對話方塊的代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
顯示對話方塊的代碼如下:
複製代碼 代碼如下: java代碼:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); showGlobalActionsDialog();
}
};

調用showGlobalActionsDialog方法將會顯示上面提到的顯示“飛航模式”,“靜音”,“關機”,選項的對話方塊。
因為我的目標是不要這個節目,把這行代碼注釋掉,替換成關機的代碼就可以了。那麼關機的代碼在哪裡呢?這段代碼位於:
frameworks\policies\base\phone\com\android\internal\policy\impl\GlobalActions.java該檔案的createDialog方法中,有如下代碼:複製代碼 代碼如下:java代碼:
mItems = Lists.newArrayList(
// 靜音mSilentModeToggle,
// mAirplaneModeOn飛機模式下,
// last: power off new SinglePressAction( com.android.internal.R.drawable.ic_lock_power_off, R.string.global_action_power_off) {
public void onPress() {
// shutdown by making sure radio and power are handled accordingly.
ShutdownThread.shutdown(mContext, true);
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true
}
});

從代碼中我們可以看出,如果選擇上述對話方塊的“關機”選項之後,將會調用ShutdownThread的shutdown方法來關機。shutdown方法的第二個參數標識是否彈出詢問對話方塊。
我們可以修改PhoneWindowManager.java的代碼,最終代碼如下:複製代碼 代碼如下:java代碼:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
//showGlobalActionsDialog();
ShutdownThread.shutdown(mContext, false);
}
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.