版本:Android 4.4
做TV方案需要添加一个有线网络优先功能,而Android中默认为WIFI优先
首先从安卓对外开放的接口入手,通过
ConnectivityManager.getActiveLinkProperties();
方法能够获取到当前网络连接的对象,通过此对象可以解析IP,网关,DNS等信息,这些不是本篇重点,如何解析这些内容下次单独列一篇文章。
通过这个接口方法,找到在Framework中ConnectivityService.java的实现
可以看到通过 mActiveDefaultNetwork这个变量在getLinkProperties方法中获取到了我们需要的信息。
在ConnectivityService中查找mActiveDefaultNetwork这个变量赋值的地方,可以看到在handleConnect方法中对mActiveDefaultNetwork进行了赋值
handleConnect方法是私有方法,继续在ConnectivityService类中查找handleConnect的调用,最终查询到是在NetworkStateTrackerHandler的handleMessage中的NetworkStateTracker.EVENT_STATE_CHANGED这一条消息有对handleConnect方法进行调用。