hellohyp 2017-10-22 07:05 采纳率: 0%
浏览 380

onCreateOutgoingConnection方法的重写问题

对于android的拨号流程,网上有很多帖子分析,基本上都会有如下的描述:
“如果是MO,会调用ConnectionService端的onCreateOutgoingConnection(),这个方法会被TelephonyConnectionService重写,最终在TelephonyConnectionService里面执行,TelephonyConnectionService是最终要实例化的类”
问题是,我真没有发现TelephonyConnectionService是在哪里被实例化的,没有实例化的话,为什么ConnectionService里面的onCreateOutgoingConnection会在TelephonyConnectionService里面执行

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 01:49
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    如果你想要实现一个更复杂的功能(比如使用你的连接池),你可能需要自己定义一个ConnectionService类。但是请注意,Android系统默认已经包含了一个名为TelephonyManager的类来管理电话功能。

    1. TelephonyManager类可以获取到手机的一些基本信息,并提供一些基本的功能,例如发送短信、拨打电话等。
    2. TelephonyManager类中,有一个createPhoneLine()方法,用于创建一个新的电话线程。你可以在这个方法上添加自定义逻辑,以满足你的需求。
    3. 然后你需要在TelephonyConnectionService类中重写onCreateOutgoingConnection()方法。这个方法将被调用来初始化和配置电话线程。

    以下是一个简单的例子:

    public class TelephonyConnectionService extends ConnectionService {
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            // 创建电话线程并设置相关参数
            PhoneThread phoneThread = new PhoneThread(this);
            phoneThread.start();
        }
    }
    
    class PhoneThread extends Thread {
        private final Context context;
    
        public PhoneThread(Context context) {
            this.context = context;
        }
    
        @Override
        public void run() {
            // 执行你的业务逻辑
            System.out.println("Running...");
        }
    }
    

    在这个例子中,我们首先通过Context对象来创建一个新的电话线程。然后,在onCreate()方法中,我们将线程启动起来。最后,当你调用start()时,run()方法将在后台运行直到线程结束。

    注意:这只是一个非常基础的例子,实际应用中你可能需要根据自己的需求进行更多的定制和优化。

    评论

报告相同问题?