android关机菜单修改,Android4.4关机菜单添加重启系列选项
本來(lái)以為挺簡(jiǎn)單的修改,沒想到花了一天的時(shí)間,在此記錄下修改過程
首先,定義幾個(gè)字符串,重啟,正在重啟....
在
/frameworks/base/core/res/res/values/strings.xml
/frameworks/base/core/res/res/values-zh-rCN/strings.xml
兩個(gè)文件中分別添加定義:
Reboot
Safe Mode
"Rebooting..."
重啟
重啟到安全模式
"正在重啟..."
光在這里定義完是沒用的,之后你在Java代碼中引用會(huì)報(bào)錯(cuò),所以還要在
/frameworks/base/core/res/res/values/public.xml文件中添加聲明
到這里你以為聲明完了么?我以為聲明完了,結(jié)果到快編譯完時(shí)又報(bào)錯(cuò),根據(jù)提示,需要在
/frameworks/base/api/current.txt文件中聲明API接口,我這不是外部應(yīng)用,為毛要聲明?那就繼續(xù)添加唄
查找public static final class R.string {聲明,添加定義
field public static final int global_action_power_reboot = 17039384; // 0x1040018
field public static final int global_action_power_safemode = 17039385; // 0x1040019
field public static final int reboot_progress = 17039386; // 0x104001a
這些字符串的ID是搜索沒有定義的ID然后自己編寫上去的,可根據(jù)情況進(jìn)行修改,但在public.xml跟current.txt中保持一致
做完這些才算定義完....
修改代碼:
/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java
1. 導(dǎo)入需要的包
import java.io.File;
import java.io.FileWriter;
import android.os.PowerManager;
import java.io.IOException;
找到函數(shù)
private GlobalActionsDialog createDialog()
在mItems = new ArrayList();后面進(jìn)行添加
// 2016-03-03 14:43:58 添加重啟菜單
mItems.add(
new SinglePressAction(
com.android.internal.R.drawable.stat_notify_sync,
R.string.global_action_power_reboot) {
public void onPress() {
// 重啟
PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
pm.reboot(null); // 調(diào)用PowerManager類中的reboot方法
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true;
}
});
// 2016-03-03 14:49:03 添加重啟到安全模式
mItems.add(
new SinglePressAction(
com.android.internal.R.drawable.ic_print_error,
R.string.global_action_power_safemode) {
public void onPress() {
// 重啟到安全模式
mWindowManagerFuncs.rebootSafeMode(true);
}
public boolean onLongPress() {
// 長(zhǎng)按重啟到Recovery
recoveryMode(mContext);
return true;
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true;
}
});其中的圖片資源使用系統(tǒng)現(xiàn)有的,沒有另外進(jìn)行添加,從添加字符串可以想到添加個(gè)圖片資源也不省心,干脆用現(xiàn)有的資源好了
到這里要說(shuō)改完了么?功能都已經(jīng)實(shí)現(xiàn)了,不過關(guān)機(jī)時(shí)顯示的是正在關(guān)機(jī),這多少有些差強(qiáng)人意了,那么就修改
/frameworks/base/services/java/com/android/server/power/ShutdownThread.java文件
查找private static void beginShutdownSequence(Context context)函數(shù)
// 修改這段代碼
ProgressDialog pd = new ProgressDialog(context);
pd.setTitle(context.getText(com.android.internal.R.string.power_off));
pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress));
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
// 修改后
ProgressDialog pd = new ProgressDialog(context);
if (mReboot){
pd.setTitle(context.getText(com.android.internal.R.string.global_action_power_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));
}
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);這樣重啟時(shí)就會(huì)顯示正在重啟進(jìn)度框了.
要說(shuō)為什么之前不直接使用ShutdownThread.reboot方法呢?開始也用了,但是提示未定義錯(cuò)誤,引用com.android.server.power.ShutdownThread也沒用,
最后使用了PowerManager接口了....
PS: 我就知道Android不會(huì)這么弱,是我太菜....
自定義的字符不需要在public.xml跟current.txt中聲明,
到文件:/frameworks/base/core/res/res/values/symbols.xml中進(jìn)行聲明即可
也不用自定義ID什么的,就這么簡(jiǎn)單,圖片也可以自定義....
總結(jié)
以上是生活随笔為你收集整理的android关机菜单修改,Android4.4关机菜单添加重启系列选项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android中获取mac地址8.0,关
- 下一篇: android adb 传文件大小,使用