Android4.0中修改挂断键(ENDCALL)的默认行为

简介: 文件: frameworks/base/core/java/android/provider/Setings.java         public static final String END_BUTTON_BEHAVIOR = "e...

文件:

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;


目录
相关文章
DHL
|
存储 安全 前端开发
Android 12 行为变更,对应用产生的影响
在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响以及 Google 为什么需要这么做。
DHL
227 0
Android 12 行为变更,对应用产生的影响
|
API Android开发
Android 6.0 权限行为变更详解
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/82182615 文章最早发布于我的微信公众号 Android开发者家园 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
1161 0
|
JavaScript 前端开发 Android开发
《Android游戏开发详解》一2.13 调用对象的行为
在前面的小节中,我们介绍了如何赋值和访问所创建的对象的状态。接下来,我们讨论方法,并且学习如何调用对象的行为。
1203 0
|
Android开发 API
Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为
原文地址:http://android.xsoftlab.net/training/sharing/shareaction.html 从Android4.0开始,使用ActionProvider可以更方便的在ActionBar上实现一个有效的、用户友好的分享按钮。
906 0
|
API Android开发 数据安全/隐私保护
Android 6.0(API级别23)包括各种系统变化和API的行为变化。
          随着新的特性和功能,Android 6.0(API级别23)包括各种系统变化和API的行为变化。本文强调一些关键的变化,你应该理解和考虑在你的应用程序。
1028 0