Fixed network reachability down/up when connectivity changes + set dns server before network is up
This commit is contained in:
parent
459482b52b
commit
fbd1e3d2ed
1 changed files with 12 additions and 11 deletions
|
@ -958,8 +958,10 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
if (mConnectivityManager == null) return;
|
if (mConnectivityManager == null) return;
|
||||||
|
|
||||||
boolean connected = false;
|
boolean connected = false;
|
||||||
NetworkInfo networkInfo = null;
|
NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo();
|
||||||
if (Version.sdkAboveOrEqual(Version.API21_LOLLIPOP_50)) {
|
connected = networkInfo != null && networkInfo.isConnected();
|
||||||
|
|
||||||
|
if (networkInfo == null && Version.sdkAboveOrEqual(Version.API21_LOLLIPOP_50)) {
|
||||||
for (Network network : mConnectivityManager.getAllNetworks()) {
|
for (Network network : mConnectivityManager.getAllNetworks()) {
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
networkInfo = mConnectivityManager.getNetworkInfo(network);
|
networkInfo = mConnectivityManager.getNetworkInfo(network);
|
||||||
|
@ -969,9 +971,6 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
networkInfo = mConnectivityManager.getActiveNetworkInfo();
|
|
||||||
connected = networkInfo != null && networkInfo.isConnected();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (networkInfo == null || !connected) {
|
if (networkInfo == null || !connected) {
|
||||||
|
@ -985,23 +984,26 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
|
|
||||||
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
|
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
|
||||||
if (wifiOnly){
|
if (wifiOnly){
|
||||||
if (networkInfo.getType()==ConnectivityManager.TYPE_WIFI)
|
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
|
||||||
|
setDnsServers();
|
||||||
mLc.setNetworkReachable(true);
|
mLc.setNetworkReachable(true);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Log.i("Wifi-only mode, setting network not reachable");
|
Log.i("Wifi-only mode, setting network not reachable");
|
||||||
mLc.setNetworkReachable(false);
|
mLc.setNetworkReachable(false);
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
int curtype=networkInfo.getType();
|
int curtype=networkInfo.getType();
|
||||||
|
|
||||||
if (curtype!=mLastNetworkType){
|
if (curtype != mLastNetworkType) {
|
||||||
//if kind of network has changed, we need to notify network_reachable(false) to make sure all current connections are destroyed.
|
//if kind of network has changed, we need to notify network_reachable(false) to make sure all current connections are destroyed.
|
||||||
//they will be re-created during setNetworkReachable(true).
|
//they will be re-created during setNetworkReachable(true).
|
||||||
Log.i("Connectivity has changed.");
|
Log.i("Connectivity has changed.");
|
||||||
mLc.setNetworkReachable(false);
|
mLc.setNetworkReachable(false);
|
||||||
}
|
}
|
||||||
|
setDnsServers();
|
||||||
mLc.setNetworkReachable(true);
|
mLc.setNetworkReachable(true);
|
||||||
mLastNetworkType=curtype;
|
mLastNetworkType = curtype;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1926,8 +1928,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void networkReachableChanged(LinphoneCore lc, boolean enable) {
|
public void networkReachableChanged(LinphoneCore lc, boolean enable) {
|
||||||
Log.d("Set Dns servers");
|
|
||||||
setDnsServers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue