zoukankan      html  css  js  c++  java
  • [置顶] Android4.0中修改挂断键(ENDCALL)的默认行为

    文件:

    frameworks/base/core/java/android/provider/Setings.java


            public static final String END_BUTTON_BEHAVIOR = "end_button_behavior";

            /**
             * END_BUTTON_BEHAVIOR value for "go home".
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_HOME = 0x1;

            /**
             * END_BUTTON_BEHAVIOR value for "go to sleep".
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_SLEEP = 0x2;

            /**
             * END_BUTTON_BEHAVIOR default value.
             * @hide
             */
            public static final int END_BUTTON_BEHAVIOR_DEFAULT = END_BUTTON_BEHAVIOR_SLEEP;


    另:关于getInt(ContentResolver cr, String name, int def)接口参数的问题,最后一个参数def是默认值,在没有读取到数据库中的设置数据时使用,在文件:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中有语句:mEndcallBehavior = Settings.System.getInt(resolver,
                        Settings.System.END_BUTTON_BEHAVIOR,
                        Settings.System.END_BUTTON_BEHAVIOR_DEFAULT);用来获取挂断键的默认行为以供在下面挂断键消息来了之后做处理:

    case KeyEvent.KEYCODE_ENDCALL: {
                    result &= ~ACTION_PASS_TO_USER;
                    if (down) {
                        ITelephony telephonyService = getTelephonyService();
                        boolean hungUp = false;
                        if (telephonyService != null) {
                            try {
                                hungUp = telephonyService.endCall();
                            } catch (RemoteException ex) {
                                Log.w(TAG, "ITelephony threw RemoteException", ex);
                            }
                        }
                        interceptPowerKeyDown(!isScreenOn || hungUp);
                    } else {
                        if (interceptPowerKeyUp(canceled)) {
                            if ((mEndcallBehavior
                                    & Settings.System.END_BUTTON_BEHAVIOR_HOME) != 0) {
                                if (goHome()) {
                                    break;
                                }
                            }
                            if ((mEndcallBehavior
                                    & Settings.System.END_BUTTON_BEHAVIOR_SLEEP) != 0) {
                                result = (result & ~ACTION_POKE_USER_ACTIVITY) | ACTION_GO_TO_SLEEP;
                            }
                        }
                    }
                    break;


  • 相关阅读:
    作业 20181030-3互评Alpha版本
    Alpha阶段事后诸葛亮会议记录
    Alpha发布用户使用报告
    20181023-2 贡献分配
    作业 20181016-1 Alpha阶段贡献分配规则
    Scrum立会报告+燃尽图(十月三十日总第二十一次)
    OC中时间函数的使用
    OC中的集合详解
    面向对象的概念详解(转)
    集中类
  • 原文地址:https://www.cnblogs.com/james1207/p/3297213.html
Copyright © 2011-2022 走看看