Fix network reachability for android 7

This commit is contained in:
Erwan Croze 2017-05-09 10:45:37 +02:00
parent 207eb626b6
commit 733c2f7a31

View file

@ -151,9 +151,11 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
private BroadcastReceiver mKeepAliveReceiver;
private BroadcastReceiver mDozeReceiver;
private BroadcastReceiver mHookReceiver;
private BroadcastReceiver mNetworkReceiver;
private IntentFilter mKeepAliveIntentFilter;
private IntentFilter mDozeIntentFilter;
private IntentFilter mHookIntentFilter;
private IntentFilter mNetworkIntentFilter;
private Handler mHandler = new Handler();
private WakeLock mIncallWakeLock;
private WakeLock mProximityWakelock;
@ -693,8 +695,23 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
}
finally {
try {
mServiceContext.unregisterReceiver(mKeepAliveReceiver);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
mServiceContext.unregisterReceiver(mNetworkReceiver);
}
} catch (Exception e) {
Log.e(e);
}
try {
mServiceContext.unregisterReceiver(mHookReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
mServiceContext.unregisterReceiver(mKeepAliveReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
dozeManager(false);
} catch (Exception e) {
Log.e(e);
@ -841,6 +858,13 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mProximityWakelock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "manager_proximity_sensor");
// Since Android N we need to register the network manager
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
mNetworkReceiver = new NetworkManager();
mNetworkIntentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
mServiceContext.registerReceiver(mNetworkReceiver, mNetworkIntentFilter);
}
updateNetworkReachability();
resetCameraFromPreferences();
@ -982,9 +1006,28 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
Log.e(e);
}
finally {
mServiceContext.unregisterReceiver(mKeepAliveReceiver);
mServiceContext.unregisterReceiver(mHookReceiver);
dozeManager(false);
try {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
mServiceContext.unregisterReceiver(mNetworkReceiver);
}
} catch (Exception e) {
Log.e(e);
}
try {
mServiceContext.unregisterReceiver(mHookReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
mServiceContext.unregisterReceiver(mKeepAliveReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
dozeManager(false);
} catch (Exception e) {
Log.e(e);
}
mLc = null;
instance = null;
}
@ -996,7 +1039,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter);
} else {
Log.i("[Doze Mode]: unregister");
if (dozeModeEnabled) mServiceContext.unregisterReceiver(mDozeReceiver);
mServiceContext.unregisterReceiver(mDozeReceiver);
dozeModeEnabled = false;
}
}