void CNetworkAndroid::RetrieveInterfaces() { CSingleLock lock(m_refreshMutex); // Cannot delete interfaces here, as there still might have references to it for (auto intf : m_oldInterfaces) delete intf; m_oldInterfaces = m_interfaces; m_interfaces.clear(); CJNIConnectivityManager connman(CXBMCApp::getSystemService(CJNIContext::CONNECTIVITY_SERVICE)); std::vector<CJNINetwork> networks = connman.getAllNetworks(); for (auto n : networks) { CJNILinkProperties lp = connman.getLinkProperties(n); if (lp) { CJNINetworkInterface intf = CJNINetworkInterface::getByName(lp.getInterfaceName()); if (xbmc_jnienv()->ExceptionCheck()) { xbmc_jnienv()->ExceptionClear(); CLog::Log(LOGERROR, "CNetworkAndroid::RetrieveInterfaces Cannot get interface by name: %s", lp.getInterfaceName().c_str()); continue; } if (intf) m_interfaces.push_back(new CNetworkInterfaceAndroid(n, lp, intf)); else CLog::Log(LOGERROR, "CNetworkAndroid::RetrieveInterfaces Cannot get interface by name: %s", lp.getInterfaceName().c_str()); } else CLog::Log(LOGERROR, "CNetworkAndroid::RetrieveInterfaces Cannot get link properties for network: %s", n.toString().c_str()); } }
void CNetworkAndroid::RetrieveInterfaces() { CJNIConnectivityManager connman(CXBMCApp::getSystemService(CJNIContext::CONNECTIVITY_SERVICE)); std::vector<CJNINetwork> networks = connman.getAllNetworks(); for (auto n : networks) { CJNINetworkInfo ni = connman.getNetworkInfo(n); CJNILinkProperties lp = connman.getLinkProperties(n); CJNINetworkInterface intf = CJNINetworkInterface::getByName(lp.getInterfaceName()); m_interfaces.push_back(new CNetworkInterfaceAndroid(n, ni, lp, intf)); } }