• 在锁屏界面长按紧急呼救按钮添加自动拨打112功能


    该功能在紧急呼救按钮中添加onLongClick事件的处理即可。其中Intent.ACTION_CALL_EMERGENCY是紧急呼救的action。

    修改文件/frameworks/base/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java

    public class EmergencyButton extends Button {

    ......

        @Override
        protected void onFinishInflate() {

    ......

    //默认的点击跳转到拨号的代码

            setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    takeEmergencyCallAction();
                }
            });

    //新加的长按拨号的代码
            setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v){
                    Log.d(TAG, "test_ onLongClick");
                    takeLongClickEmergencyCallAction();
                    return true;
                }
            });
    ......

        /**
         * call 112.
         */
        public void takeLongClickEmergencyCallAction(){
            Log.d(TAG, "test_ takeLongClickCallAction");
            String phoneNumber = "112";
            Intent intentPhone = new Intent(Intent.ACTION_CALL_EMERGENCY, Uri.parse("tel:" + phoneNumber));
            intentPhone.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
            getContext().startActivityAsUser(intentPhone,
                        new UserHandle(mLockPatternUtils.getCurrentUser()));
        }

        /**
         * Shows the emergency dialer or returns the user to the existing call.
         */
        public void takeEmergencyCallAction() {
            // TODO: implement a shorter timeout once new PowerManager API is ready.
            // should be the equivalent to the old userActivity(EMERGENCY_CALL_TIMEOUT)
            mPowerManager.userActivity(SystemClock.uptimeMillis(), true);
            if (mLockPatternUtils.isInCall()) {
                mLockPatternUtils.resumeCall();
            } else {
                final boolean bypassHandler = true;
                KeyguardUpdateMonitor.getInstance(mContext).reportEmergencyCallAction(bypassHandler);
                Intent intent = new Intent(ACTION_EMERGENCY_DIAL);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                getContext().startActivityAsUser(intent,
                        new UserHandle(mLockPatternUtils.getCurrentUser()));
            }
        }

    ......

    这段代码中使用了Uri,需要import android.net.Uri;

  • 相关阅读:
    【HDU5015】233 Matrix
    【POJ3233】Matrix Power Series
    【POJ3070】Fibonacci
    【NOIP模拟】奇怪的字符串
    【NOIP模拟】超级跳棋
    【NOIP模拟】玛雅文字
    【NOIP模拟】距离
    【闲聊】关于本BLOG
    【NOIP模拟】树
    【NOIP模拟】机器人
  • 原文地址:https://www.cnblogs.com/xiayexingkong/p/6001582.html
Copyright © 2020-2023  润新知