Android 關(guān)機彈出選擇菜單的深入解析
更新時間:2013年06月15日 18:31:22 作者:
本篇文章是對Android 關(guān)機彈出選擇菜單進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在Android系統(tǒng)中,長按Power鍵默認(rèn)會彈出對話框讓你選擇“飛行模式”,“靜音”,“關(guān)機”等功能。這些功能對于手機非常適用,但是對于機頂盒產(chǎn)品就沒有什么必要了。
本文簡單介紹一下怎樣定制關(guān)機界面。
我的目標(biāo)是長按Power鍵,將會關(guān)機,彈出“設(shè)備將要關(guān)機”選擇對話框。如果可以選擇“是”關(guān)機,和“否”返回系統(tǒng)。
彈出對話框的代碼位于:
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();
}
};
調(diào)用showGlobalActionsDialog方法將會顯示上面提到的顯示“飛行模式”,“靜音”,“關(guān)機”,選項的對話框。
因為我的目標(biāo)是不要這個節(jié)目,把這行代碼注釋掉,替換成關(guān)機的代碼就可以了。那么關(guān)機的代碼在哪里呢?這段代碼位于:
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
}
});
從代碼中我們可以看出,如果選擇上述對話框的“關(guān)機”選項之后,將會調(diào)用ShutdownThread的shutdown方法來關(guān)機。shutdown方法的第二個參數(shù)標(biāo)識是否彈出詢問對話框。
我們可以修改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);
}
};
本文簡單介紹一下怎樣定制關(guān)機界面。
我的目標(biāo)是長按Power鍵,將會關(guān)機,彈出“設(shè)備將要關(guān)機”選擇對話框。如果可以選擇“是”關(guān)機,和“否”返回系統(tǒng)。
彈出對話框的代碼位于:
frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
顯示對話框的代碼如下:
復(fù)制代碼 代碼如下:
java代碼:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); showGlobalActionsDialog();
}
};
調(diào)用showGlobalActionsDialog方法將會顯示上面提到的顯示“飛行模式”,“靜音”,“關(guān)機”,選項的對話框。
因為我的目標(biāo)是不要這個節(jié)目,把這行代碼注釋掉,替換成關(guān)機的代碼就可以了。那么關(guān)機的代碼在哪里呢?這段代碼位于:
frameworks\policies\base\phone\com\android\internal\policy\impl\GlobalActions.java該文件的createDialog方法中,有如下代碼:
復(fù)制代碼 代碼如下:
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
}
});
從代碼中我們可以看出,如果選擇上述對話框的“關(guān)機”選項之后,將會調(diào)用ShutdownThread的shutdown方法來關(guān)機。shutdown方法的第二個參數(shù)標(biāo)識是否彈出詢問對話框。
我們可以修改PhoneWindowManager.java的代碼,最終代碼如下:
復(fù)制代碼 代碼如下:
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);
}
};
相關(guān)文章
Flutter?webview與網(wǎng)頁通訊交互實現(xiàn)
最近要在Flutter項目的基礎(chǔ)上加一個實時定位的功能,下面這篇文章主要給大家介紹了關(guān)于Flutter?webview與網(wǎng)頁通訊交互實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Android自定義控件ImageView實現(xiàn)點擊之后出現(xiàn)陰影效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件ImageView實現(xiàn)點擊之后有陰影效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12淺談Android Studio如何Debug對應(yīng)so文件C/C++代碼
本篇文章主要介紹了淺談Android Studio如何Debug對應(yīng)so文件C/C++代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12Android+Flutter實現(xiàn)文字跑馬燈特效
跑馬燈常常被運用在很多領(lǐng)域, 例如商場的電子條幅、大樓的宣傳廣告位、地鐵的廣告位。今天我們來說一下flutter 怎么通過繪制來實現(xiàn)跑馬燈效果!,希望對大家有所幫助2022-11-11Android中父View和子view的點擊事件處理問題探討
當(dāng)屏幕中包含一個ViewGroup,而這個ViewGroup又包含一個子view,這個時候android系統(tǒng)如何處理Touch事件呢,接下來將對此問題進(jìn)行深入了解,感興趣的朋友可以了解參考下,或許對你有所幫助2013-01-01移動端開發(fā)之Jetpack?Hilt技術(shù)實現(xiàn)解耦
Hilt的出現(xiàn)解決前兩點問題,因為Hilt是Dagger針對Android平臺的場景化框架,比如Dagger需要我們手動聲明注入的地方,而Android聲明的地方不都在onCreate()嗎,所以Hilt就幫我們做了,除此之外還做了很多事情2023-02-02Android studio實現(xiàn)兩個界面間的切換
這篇文章主要為大家詳細(xì)介紹了Android studio實現(xiàn)兩個界面間的切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04