背景
Protocol满足运营商需求,即便是PDN的通的,也可能因为网络问题导致MMS、热点等业务无法正常工作。(丢包?网络无响应?服务器异常)
或者Protocol跟运营商需求不一致,直接SETUP_DATA_CALL失败了。
一般而言,如果APN Protocol 参数配置不符合运营商要求,在 PDN 建立的时候会setup data失败的,因为数据连接也取决于网络返回的信息。
代码
获取网络连接的协议信息
通过ConnectivittyManager拿到链路信息LinkProperties
//Settings应用中,Google原生的状态显示逻辑mCM = context.getSystemService(ConnectivityManager.class);private static String getDefaultIpAddresses(ConnectivityManager cm) {LinkProperties prop = cm.getLinkProperties(cm.getActiveNetwork());return formatIpAddresses(prop);}private static String formatIpAddresses(LinkProperties prop) {if (prop == null) return null;Iterator<LinkAddress> iter = prop.getAllLinkAddresses().iterator();// If there are no entries, return nullif (!iter.hasNext()) return null;// Concatenate all available addresses, newline separatedStringBuilder addresses = new StringBuilder();while (iter.hasNext()) {addresses.append(iter.next().getAddress().getHostAddress());if (iter.hasNext()) addresses.append("