生活随笔
收集整理的這篇文章主要介紹了
android4.2添加重启菜单项
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文主要是針對android4.2關機菜單添加重啟功能
A.關機提示
android4.2/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java
?
[java]?view plaincopy
private?void?handleShow()?{?? ??????? ?????awakenIfNecessary();?? ?????mDialog?=?createDialog();?? ?????prepareDialog();?? ?????WindowManager.LayoutParams?attrs?=?mDialog.getWindow().getAttributes();?? ?????attrs.setTitle("GlobalActions");?? ?????mDialog.getWindow().setAttributes(attrs);?? ?????mDialog.show();?? ?? ?????mDialog.getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_DISABLE_EXPAND);?? ?? ?????? ? ? ? ? ? ?? ?}??
?? 關機選項菜單 找到createDialog() 賦值power off那一項,? 修改關機為:? ?????? mWindowManagerFuncs.reboot(true);
[java]?view plaincopy
private?GlobalActionsDialog?createDialog()?{?? ????????????....?? ?????????????? ????????????mItems.add(?? ????????????????....?? ???????????????});?? ?? ?????????????? ????????????try?{?? ???????????????mItems.add(?? ???????????????????new?SinglePressAction(?? ???????????????????????????com.android.internal.R.drawable.ic_lock_power_off,?? ???????????????????????????R.string.global_action_reboot)?{?? ?? ???????????????????????public?void?onPress()?{?? ????????????????????????????? ?????????????? ????????????????????????? ????????????????????????? ???????????????????????????try?{?? ???????????????????????????????mWindowManagerFuncs.reboot(true);?? ???????????????????????????}?catch?(Exception?e)?{?? ????????????????????????????????? ???????????????????????????}?? ?? ???????????????????????}?? ?? ???????????????????????public?boolean?showDuringKeyguard()?{?? ???????????????????????????return?true;?? ???????????????????????}?? ?? ???????????????????????public?boolean?showBeforeProvisioning()?{?? ???????????????????????????return?true;?? ???????????????????????}?? ???????????????????????????});?? ????????????????????????}?catch?(Exception?e)?{?? ????????????????????????????? ????????????????????????}?? ????????????????????}?? ????????????????????<pre?name="code"?class="java">????????????????
?........//省略
B. 1)??? android4.2/frameworks/base/core/java/android/view/WindowManagerPolicy.java??? 找到WindowManagerFuncs這個interface的定義,增加如下function的聲明:
[java]?view plaincopy
public?interface?WindowManagerFuncs?{?? ?? ????public?void?reboot(boolean?confirm);?? ?? }??
?
??? 2)
??? android4.2/frameworks/base/services/java/com/android/server/wm/WindowManagerService.java
??? 找到shutdown()函數(shù),在其后面添加reboot()函數(shù),函數(shù)內(nèi)容如下:
[java]?view plaincopy
?? ?? @Override?? ?? public?void?reboot(boolean?confirm)?{?? ?? ????ShutdownThread.reboot(mContext,?confirm);?? ?? }??
C. 修改關機時的進度框提示
????? android4.2/frameworks/base/services/java/com/android/server/power/ShutdownThread.java
?
[java]?view plaincopy
? ? ? ? ? ? ?? ??? ?……?? ?if(mReboot){??????? ??????????pd.setTitle(context.getText(com.android.internal.R.string.global_action_reboot));?? ??????????pd.setMessage(context.getText(com.android.internal.R.string.reboot_progress));?? ??????}else{???????????? ??????????pd.setTitle(context.getText(com.android.internal.R.string.power_off));?? ??????????pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));?? ??????}?? ?……?? ???
D.? 重啟詢問對話框?? // 這部分可能代碼不一樣? 不過都是修改shutdownInner函數(shù)里面的sConfirmDialog這個dialog的
?
[cpp]?view plaincopy
shutdownInner(final?Context?context,?boolean?confirm)?? ??????if(Settings.Global.getInt(context.getContentResolver(),?Settings.Global.DEVICE_PROVISIONED,?1)==1?&&?? ??????????SystemProperties.getBoolean("ro.sys.bootfast",?false)){?? ??????????????......?? ???????????????? ??????????????if(mReboot){?? ??????????????????idBootMode?=?com.android.internal.R.string.reboot_confirm_question;?? ??????????????}else{?? ??????????????????idBootMode?=?com.android.internal.R.string.shutdown_confirm_question;?? ??????????????}?? ??????????????sConfirmDialog?=?new?AlertDialog.Builder(context)?? ??????????????????.setTitle(mReboot?? ????????????????????????com.android.internal.R.string.global_action_reboot?? ??????????????????????:?com.android.internal.R.string.power_off)?? ??????????????????.setMessage(idBootMode)?? ??????????????????.setPositiveButton(com.android.internal.R.string.yes,?new?DialogInterface.OnClickListener()?{?? ??????????????????public?void?onClick(DialogInterface?dialog,?int?which)?{?? ??????????????????????if(mPolicy!=null)?? ??????????????????????????mPolicy.acquireBAView();?? ??????????????????????beginShutdownSequence(context);?? ??????????????????}?? ??????????????????})?? ??????????????????.setNegativeButton(com.android.internal.R.string.no,?null)?? ??????????????????.create();?? ?? ?????????????}??
??? /說明? 無關? 只做注釋///
? ? ? ? ? ? ? // 下面這個函數(shù)會殺死所有的activity, 桌面不能殺死"com.android.launcher", 否則就會導致關機的時候顯示開機動畫
????????????? private? void killRemoveActivity(Context context)
???? /end說明///???????
????
F. 重啟功能實現(xiàn)了,但是不能到此結束,定制Android系統(tǒng)的重啟功能,添加選項和修改重啟提示框時加入了“重啟”和“正在重啟”的字符串,
?? 所以會涉及到在系統(tǒng)資源文件中添加新的字符串,
?? 源碼中資源文件涉及到的多國語言直接忽略,我只在values/strings.xml和values-zh-rCN/strings.xml兩個文件中加入對應的字符串:
??? 路徑: framework/base/core/res/res/valuse/?? or? framework/base/core/res/res/values-zh-rCN/
? 上面是拷貝別人的,? 實際上我發(fā)現(xiàn)如果不在symbols.xml添加相關的字符串信息,? 編譯會報錯的,? 故應該在framework/base/core/res/res/valuse/ symbols.xml參考其他的把自己的添加上:
[html]?view plaincopy
strings.xml:?? ?????<string?name="reboot_confirm_question">"Do?you?want?to?reboot?"</string>?? ?????<string?name="global_action_reboot">"Reboot"</string>?? ?????<string?name="reboot_progress">"Rebooting..."</string>?? ?? ?symbols.xml?? ?????<java-symbol?type="string"?name="reboot_confirm_question"?/>?? ?????<java-symbol?type="string"?name="global_action_reboot"?/>?? ?????<java-symbol?type="string"?name="reboot_progress"?/>??
E.最后編譯
因為修改涉及到系統(tǒng)資源文件又涉及到policy.jar包,經(jīng)過多次嘗試,正確的編譯順序如下:
步驟1.編譯frameworks/base/res,在out/target/product/X設備名X/system/framework/目錄下生成framework-res.apk
步驟2.編譯frameworks/base/,在o同樣目錄下生成framework.jar包(不能忽略,不然步驟3編譯報錯)
步驟3.編譯frameworks/base/services/java/???? 生成services.jar
步驟4.編譯frameworks/base/policy,在同樣目錄下生成android.policy.jar 包
參考:?
http://blog.csdn.net/zzp16/article/details/7829063
http://www.2cto.com/kf/201403/288710.html
總結
以上是生活随笔為你收集整理的android4.2添加重启菜单项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。