日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android4.2添加重启菜单项

發布時間:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android4.2添加重启菜单项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是針對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);??
  • ??
  • ?????/****************?
  • ?
  • ??????如果只需要關機確認可以修改為:?
  • ??????awakenIfNecessary();?
  • ??????mWindowManagerFuncs.shutdown(true);?
  • ?
  • ?????*******************/??
  • ?}??

  • ?? 關機選項菜單 找到createDialog() 賦值power off那一項,? 修改關機為:? ?????? mWindowManagerFuncs.reboot(true); [java]?view plaincopy
  • private?GlobalActionsDialog?createDialog()?{??
  • ????????????....//?省略??
  • ????????????//?first:?power?off??
  • ????????????mItems.add(??
  • ????????????????....//?省略??
  • ???????????????});??
  • /??
  • ????????????//?second:reboot??添加這一項????
  • ????????????try?{//?添加try?catch?為了避免錯誤...??
  • ???????????????mItems.add(??
  • ???????????????????new?SinglePressAction(??
  • ???????????????????????????com.android.internal.R.drawable.ic_lock_power_off,??
  • ???????????????????????????R.string.global_action_reboot)?{??
  • ??
  • ???????????????????????public?void?onPress()?{??
  • ???????????????????????????//?shutdown?by?making?sure?radio?and?power?are?handled?accordingly.??
  • ????????????//????????????????????mWindowManagerFuncs.rebootSafeMode(true);??
  • ???????????????????????//????mWindowManagerFuncs.reboot(mContext,null,false);??
  • ???????????????????????//????ShutdownThread.reboot(mContext,null,false);??
  • ???????????????????????????try?{??
  • ???????????????????????????????mWindowManagerFuncs.reboot(true);??
  • ???????????????????????????}?catch?(Exception?e)?{??
  • ???????????????????????????????//?TODO:?handle?exception??如果有問題,?最好在這里打印一些信息看看是不是這里出問題了??
  • ???????????????????????????}??
  • ??
  • ???????????????????????}??
  • ??
  • ???????????????????????public?boolean?showDuringKeyguard()?{??
  • ???????????????????????????return?true;??
  • ???????????????????????}??
  • ??
  • ???????????????????????public?boolean?showBeforeProvisioning()?{??
  • ???????????????????????????return?true;??
  • ???????????????????????}??
  • ???????????????????????????});??
  • ????????????????????????}?catch?(Exception?e)?{??
  • ???????????????????????????//?TODO:?handle?exception????
  • ????????????????????????}??
  • ????????????????????}??
  • ????????????????????<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()函數,在其后面添加reboot()函數,函數內容如下:

    [java]?view plaincopy
  • //?Called?by?window?manager?policy.?Not?exposed?externally.??
  • ??
  • @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
  • /*/?
  • ?//修改前:?
  • ?……?
  • ??pd.setTitle(context.getText(com.android.internal.R.string.power_off));?
  • ??pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));?
  • ?……?
  • ?/*/??
  • ?//修改后:??
  • ?……??
  • ?if(mReboot){?????//?reboot?progress??
  • ??????????pd.setTitle(context.getText(com.android.internal.R.string.global_action_reboot));??
  • ??????????pd.setMessage(context.getText(com.android.internal.R.string.reboot_progress));??
  • ??????}else{??????????//?shutdown?progress??
  • ??????????pd.setTitle(context.getText(com.android.internal.R.string.power_off));??
  • ??????????pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));??
  • ??????}??
  • ?……??
  • ?//*/??


  • D.? 重啟詢問對話框?? // 這部分可能代碼不一樣? 不過都是修改shutdownInner函數里面的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)){??
  • ??????????????......??
  • ??????????????//?這部分可能代碼不一樣??不過都是修改sConfirmDialog這個dialog的??
  • ??????????????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();??
  • ??
  • ?????????????}??
  • ??? /說明? 無關? 只做注釋///
    ? ? ? ? ? ? ? // 下面這個函數會殺死所有的activity, 桌面不能殺死"com.android.launcher", 否則就會導致關機的時候顯示開機動畫
    ????????????? private? void killRemoveActivity(Context context)

    ???? /end說明///???????

    ????

    F. 重啟功能實現了,但是不能到此結束,定制Android系統的重啟功能,添加選項和修改重啟提示框時加入了“重啟”和“正在重啟”的字符串,
    ?? 所以會涉及到在系統資源文件中添加新的字符串,
    ?? 源碼中資源文件涉及到的多國語言直接忽略,我只在values/strings.xml和values-zh-rCN/strings.xml兩個文件中加入對應的字符串:

    ??? 路徑: framework/base/core/res/res/valuse/?? or? framework/base/core/res/res/values-zh-rCN/

    ? 上面是拷貝別人的,? 實際上我發現如果不在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.最后編譯
    因為修改涉及到系統資源文件又涉及到policy.jar包,經過多次嘗試,正確的編譯順序如下:
    步驟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添加重启菜单项的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲欧美成人一区二区 | 97视频| 91啦中文| 日本免费色视频 | 亚洲图片欧美激情 | 网站一级片 | 日韩一区二区在线播放 | 精品久久久久久久久中文字幕 | 国产精自产拍久久久久久蜜 | 亚洲美女操 | 日韩成人免费av | 亚洲精品一区中文字幕乱码 | 日韩一区二区三区四区五区六区 | 三级三级久久三级久久 | 亚洲v日韩v综合v精品v | 欧美怡红院视频一区二区三区 | 午夜天堂影院 | 欧日韩不卡在线视频 | √天堂8资源中文在线 | 亚洲一线二线在线观看 | 女女互慰吃奶互揉调教捆绑 | 福利网址在线观看 | 久久久久99精品成人片 | 亚洲国产视频网站 | 5月婷婷6月丁香 | 天堂伊人网 | xzjzjzjzjzj欧美大片| 久久av一区二区 | 丰满人妻一区二区三区精品高清 | 波多野结衣a v在线 欧洲免费av | 超碰97人人草 | 国产最新视频 | 97理伦 | www.色日本 | 爱爱网视频| 自拍偷拍电影 | 天天操欧美 | 青娱网电信一区电信二区电信三区 | 中文字幕15页 | 精品久久一 | 精品成人一区二区三区久久精品 | 91夫妻论坛 | 极品美妇后花庭翘臀娇吟小说 | av福利在线看 | 日韩女优在线观看 | 午夜精彩视频 | 黄色小视频免费观看 | 亚洲欧美日韩成人 | 日韩三级视频 | 国产曰肥老太婆无遮挡 | 你懂的欧美 | 日韩欧美视频免费在线观看 | 久久综合亚洲色hezyo国产 | 毛片国产精品 | 亚洲综合三区 | 中文久久久 | 国产资源av | 亚洲高清资源 | 夜夜嗨一区二区三区 | 高清国产一区二区 | 香蕉视频在线看 | 国产黄a | 亚洲精品乱码久久久久久蜜桃91 | 国产女人18水真多18精品一级做 | 日韩欧美自拍偷拍 | 久草视频在线资源 | 欧美精品播放 | 毛片一级免费 | 日韩男女视频 | 黄色网在线免费观看 | 亚洲av无码国产精品永久一区 | 亚洲综合在线一区二区 | 青娱乐在线免费观看 | 日本精品不卡 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 精品国产欧美一区二区三区成人 | 国产亚洲av片在线观看18女人 | av国产网站| 夜夜爽天天操 | 国产区在线 | 日韩欧美在线中文字幕 | 狠狠躁日日躁夜夜躁2022麻豆 | 中文字幕人乱码中文字 | 国产乡下妇女做爰 | 日韩a毛片 | 欧美成人xxxx| 亚洲欧洲自拍偷拍 | 国产又粗又猛又爽又黄av | 香蕉久久夜色精品国产使用方法 | 国产h视频 | 亚洲三级在线免费观看 | 三级av片 | 依依成人在线视频 | 久久综合久久网 | 阿娇全套94张未删图久久 | 欧美一级黄色大片 | 免费在线观看视频 | 国产三级三级三级三级三级 | 国产欧美日韩精品一区二区三区 |