Fix network reachability for android 7

This commit is contained in:
Erwan Croze 2017-05-09 10:45:37 +02:00
parent aebabe988d
commit 22f26ec6ff

View file

@ -151,9 +151,11 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
private BroadcastReceiver mKeepAliveReceiver; private BroadcastReceiver mKeepAliveReceiver;
private BroadcastReceiver mDozeReceiver; private BroadcastReceiver mDozeReceiver;
private BroadcastReceiver mHookReceiver; private BroadcastReceiver mHookReceiver;
private BroadcastReceiver mNetworkReceiver;
private IntentFilter mKeepAliveIntentFilter; private IntentFilter mKeepAliveIntentFilter;
private IntentFilter mDozeIntentFilter; private IntentFilter mDozeIntentFilter;
private IntentFilter mHookIntentFilter; private IntentFilter mHookIntentFilter;
private IntentFilter mNetworkIntentFilter;
private Handler mHandler = new Handler(); private Handler mHandler = new Handler();
private WakeLock mIncallWakeLock; private WakeLock mIncallWakeLock;
private WakeLock mProximityWakelock; private WakeLock mProximityWakelock;
@ -697,8 +699,23 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
} }
finally { finally {
try { 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); mServiceContext.unregisterReceiver(mHookReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
mServiceContext.unregisterReceiver(mKeepAliveReceiver);
} catch (Exception e) {
Log.e(e);
}
try {
dozeManager(false); dozeManager(false);
} catch (Exception e) { } catch (Exception e) {
Log.e(e); Log.e(e);
@ -843,6 +860,13 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mProximityWakelock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "manager_proximity_sensor"); 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(); updateNetworkReachability();
resetCameraFromPreferences(); resetCameraFromPreferences();
@ -984,9 +1008,28 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
Log.e(e); Log.e(e);
} }
finally { finally {
mServiceContext.unregisterReceiver(mKeepAliveReceiver); try {
mServiceContext.unregisterReceiver(mHookReceiver); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
dozeManager(false); 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; mLc = null;
instance = null; instance = null;
} }
@ -998,7 +1041,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter); mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter);
} else { } else {
Log.i("[Doze Mode]: unregister"); Log.i("[Doze Mode]: unregister");
if (dozeModeEnabled) mServiceContext.unregisterReceiver(mDozeReceiver); mServiceContext.unregisterReceiver(mDozeReceiver);
dozeModeEnabled = false; dozeModeEnabled = false;
} }
} }