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;


  • 相关阅读:
    iOS 制作view渐变的效果CAGradientLayer
    iOS应用架构谈 view层的组织和调用方案
    xcode8 iOS10 log太多
    iOS 10 UserNotifications 框架解析
    iOS UITableViewCell 左滑删除时,修改删除按钮背景颜色,默认是红色的
    给self.navigationItem.rightBarButtonItem设置字体颜色
    iPhone屏幕尺寸、分辨率及适配
    iOS 判断输入是否全是空格
    ios 修改UItableviewcell点击时的颜色
    ios 播放语音(文字转语音) 播放音频文件 振动
  • 原文地址:https://www.cnblogs.com/james1207/p/3297213.html
Copyright © 2011-2022 走看看