`

修改Android framework定制重启功能

 
阅读更多
涉及到的源码(4.0)
ics/frameworks/base/policy/src/com/android/internal/policy/impl/目录下:
PhoneWindowManager.java
GlobalActions.java

ics/frameworks/base/core/java/com/android/internal/app/目录下:
ShutdownThread.java


1,跟踪Power键的长按事件,定位到弹出关机Dialog的源码是在PhoneWindowManager.java中
继续跟踪代码找到Runnable mPowerLongPress = new Runnable(),在该runnable里边调用showGlobalActionsDialog()方法便是显示长按power键弹出的关机提示对话框,如果你的机器是原生态的,默认提示“飞行模式”,“静音”和“关机”选项。
     showGlobalActionsDialog创建关机对话框的代码在GlobalActions.java里边,主要代码如下:
private AlertDialog createDialog() {  
……  
mItems = new ArrayList<Action>();  
  
        // first: power off  
        mItems.add(  
            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;  
                }  
            });  
 [color=red] 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.
                    ShutdownThread.reboot(mContext, true);
                }

                public boolean showDuringKeyguard() {
                    return true;
                }

                public boolean showBeforeProvisioning() {
                    return true;
                }
            });[/color]
        // next: airplane mode  
        mItems.add(mAirplaneModeOn);  
  
        // last: silent mode  
        if (SHOW_SILENT_TOGGLE) {  
            mItems.add(mSilentModeAction);  
        }  
……  
} 

如上,加入红色部分代码,由于ShutdownThread中已经有了reboot函数。
当然要在values/strings.xml中加入
    <string name="global_action_reboot">重启</string>  
    <string name="reboot_progress">"正在重启..."</string>

reboot方法的后两个参数解释如下:
     reason  如果值为是null,正常重启;如果是recovery,系统重启进入recovery mode
     confirm true显示关机提示框,需要用户【确认】;false不显示提示框,直接关机

2,另外一个问题是提示框的问题
在ShutdownThread.java的beginShutdownSequence(context)中加入对是否为reboot的判断:
……  
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));  
     }  
……  



3,编译
注意顺序
最后编译
因为修改涉及到系统资源文件又涉及到policy.jar包,所以按照以下顺序:
步骤1.编译frameworks/base/res,在out/target/product/X设备名X/system/framework/目录下生成framework-res.apk
步骤2.编译frameworks/base/,在out同样目录下生成framework.jar包(不能忽略,不然步骤3编译报错)
步骤3.编译frameworks/base/policy,在同样目录下生成policy.jar包
分享到:
评论

相关推荐

    framework快速部署方法

    在Android开发领域,`framework`是系统的核心框架层,它包含了许多系统服务和API,开发者通常不会直接修改这部分代码,但有时为了定制化或者优化,确实需要进行深度开发。本篇将详细介绍一种`framework`的快速部署...

    Android Settings

    2. `framework_intermediates.jar`:框架库,包含了Android系统的大部分服务和功能,如ActivityManager、ContentResolver等,是构建Android应用的核心组件。 3. `core_intermediates.jar`:基础库,提供了基本的Java...

    Xposed-framework-v90-beat3-magiskmodule.zip

    总的来说,"Xposed-framework-v90-beat3-magiskmodule.zip"为用户提供了在Magisk环境下使用Xposed框架的能力,极大地拓展了Android设备的功能性和可玩性。然而,需要注意的是,这种系统级别的修改可能会带来稳定性...

    XPOSED在ANDROID10以上所需要文件

    在Android系统中,XPOSED框架是一个非常知名的模块化系统修改工具,它允许用户通过安装各种模块来扩展或改变系统的功能。然而,由于其涉及到系统底层的修改,因此在不同的Android版本上,XPOSED的安装和使用可能会...

    android源码开发实战19.21.zip

    在Android源码开发实战中,第19.21章节主要涵盖了Android系统中的一些核心概念和技术,这些都是深入理解和定制Android系统的关键。以下是对这一主题的详细解析: 1. **Android源码结构**:Android源码是开源的,由...

    android美化教程

    【Android美化教程】这篇教程主要涉及的是如何个性化定制Android手机的界面,特别是任务栏和状态栏,让手机更具个性化风格。 1. **状态栏字体颜色修改**: - 首先,你需要提取`system\app\systemui.apk`文件。 - ...

    Android4.4真机移植过程笔记

    - 修改代码以支持开机动画功能。 - **开机音乐**: - 分析系统拷贝开机音乐资源的流程。 - 将所需的音乐资源复制到相应的位置。 - 实现开机音乐播放的代码逻辑。 - **盘符挂载**: - 定义overlay机制路径,...

    更换软件主题(zip方式)_Android主题软件.zip

    如果没有root权限,大部分内置的主题更改功能仅限于应用内部,无法全局改变系统界面。 2. **下载主题zip文件**:寻找并下载你喜欢的Android主题zip文件。这些文件可以从各种主题论坛、应用市场或开发者网站获取。...

    MTK切换开关机动画

    MTK切换开关机动画是针对基于MediaTek(MTK)芯片组的Android设备的一个功能,特别是在ICS(Ice Cream Sandwich)系统平台上实现的。MediaTek是一家知名的半导体公司,为各种智能设备提供芯片解决方案,包括智能手机...

    华为T8300删除定制软件,修改开机铃声、动画教程.pdf

    本文将指导你如何在华为T8300手机上进行ROOT操作,删除预装的定制软件,并修改开机铃声和动画。这些步骤适合对Android系统有一定了解的新手,通过遵循教程,你可以优化你的设备,提升使用体验。 首先,让我们详细...

    Xposed框架包(含sdk21-23)

    Xposed框架是一款强大的Android系统修改工具,它允许用户在不修改APK的情况下影响应用程序的运行方式,从而实现各种自定义功能。Xposed框架的核心在于它的模块系统,用户可以通过安装不同的Xposed模块来实现如系统...

    xposed安装包

    Xposed框架是一款强大的Android系统修改工具,它允许用户在不修改APK的情况下影响应用程序的运行方式,从而实现个性化定制、功能增强或者优化性能等目的。Xposed基于Android系统的权限管理机制,需要设备已经获取...

    Andriod自己制作任务栏电池数字%显示教程

    Android系统允许用户进行深度定制,特别是对于已经root的设备,你可以修改系统级别的资源文件来改变界面外观。电池百分比显示通常是通过修改系统框架资源(framework-res.apk)来实现的。 教程步骤如下: 1. **...

    Plugin Framework for Java (PF4J).zip

    PF4J 提供了一种灵活的方式来组织应用程序,使得新功能可以通过加载插件来动态添加,而无需修改核心代码。这种架构模式在大型软件系统和分布式应用中尤其常见,因为它可以提高代码的可维护性和可扩展性。 【描述】...

    LT18i4.04美化

    在进行美化过程中,修改系统文件如framework-res.apk和SystemUI.apk时,正确设置权限至关重要,否则可能导致系统无法正常启动,出现“无限重启”的问题。 **框架资源APK (framework-res.apk)** 是Android系统的核心...

    android4.4/6.0 4G分享网络给以太网补丁

    - **framework部分更改**:在Android的框架层,可能需要对NetworkService、ConnectivityManager等关键服务进行扩展和调整,以支持4G网络通过以太网接口共享。这可能包括新的接口定义、服务注册、权限管理、数据流...

    Xposed.zip

    Xposed是一款强大的Android系统框架,它允许用户通过安装各种模块来改变系统的功能或者应用的行为,无需修改APK,因此在Android开发者和爱好者中备受青睐。本压缩包“Xposed.zip”提供了一个基础的Xposed监听模型,...

    xposed-v89-sdk25-x86.zip和script.sh

    Xposed框架是一款在Android系统上运行的开源工具,它允许用户通过安装各种模块来修改系统的功能,无需root权限。在Android开发和个性化定制领域,Xposed框架有着广泛的用途,深受高级用户和开发者喜爱。"xposed-v89-...

    andriod 运营商信号显示为樱花图标文件

    在Android系统中,这些文件位于系统的资源文件夹内,通常是/system/framework/framework-res.apk或/system/app/SimIndicatorProvider.apk等。为了将这些樱花图标应用到设备上,你需要进行以下步骤: 1. 获取设备的...

Global site tag (gtag.js) - Google Analytics