From 30168a6fdbb14ddff28919f05ba1d05585a30ee7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 5 Dec 2019 10:43:57 +0100 Subject: [PATCH] Fixed various crashes reported on play store --- .../java/org/linphone/LinphoneManager.java | 2 +- .../activities/LinphoneGenericActivity.java | 6 +- .../org/linphone/activities/MainActivity.java | 2 +- .../linphone/assistant/AssistantActivity.java | 4 +- .../linphone/call/CallIncomingActivity.java | 1 + .../contacts/AsyncContactsLoader.java | 40 ++++++---- .../linphone/contacts/ContactsManager.java | 11 ++- .../linphone/contacts/LinphoneContact.java | 15 ++-- .../settings/LinphonePreferences.java | 80 +++++++++++++++++++ .../java/org/linphone/utils/DeviceUtils.java | 17 +++- 10 files changed, 145 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneManager.java b/app/src/main/java/org/linphone/LinphoneManager.java index 0f184b6f9..624f6aa1b 100644 --- a/app/src/main/java/org/linphone/LinphoneManager.java +++ b/app/src/main/java/org/linphone/LinphoneManager.java @@ -825,7 +825,7 @@ public class LinphoneManager implements SensorEventListener { public void setCallGsmON(boolean on) { mCallGsmON = on; - if (on) { + if (on && mCore != null) { mCore.pauseAllCalls(); } } diff --git a/app/src/main/java/org/linphone/activities/LinphoneGenericActivity.java b/app/src/main/java/org/linphone/activities/LinphoneGenericActivity.java index 1a218083f..100fe0c41 100644 --- a/app/src/main/java/org/linphone/activities/LinphoneGenericActivity.java +++ b/app/src/main/java/org/linphone/activities/LinphoneGenericActivity.java @@ -84,7 +84,11 @@ public abstract class LinphoneGenericActivity extends ThemeableActivity { } Log.i("[Generic Activity] Starting Service"); - startService(new Intent().setClass(this, LinphoneService.class)); + try { + startService(new Intent().setClass(this, LinphoneService.class)); + } catch (IllegalStateException ise) { + Log.e("[Generic Activity] Couldn't start service, exception: ", ise); + } } } } diff --git a/app/src/main/java/org/linphone/activities/MainActivity.java b/app/src/main/java/org/linphone/activities/MainActivity.java index ca1d15f46..694878b8d 100644 --- a/app/src/main/java/org/linphone/activities/MainActivity.java +++ b/app/src/main/java/org/linphone/activities/MainActivity.java @@ -424,8 +424,8 @@ public abstract class MainActivity extends LinphoneGenericActivity } private void quit() { - goHomeAndClearStack(); stopService(new Intent(Intent.ACTION_MAIN).setClass(this, LinphoneService.class)); + goHomeAndClearStack(); /*ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); am.killBackgroundProcesses(getString(R.string.sync_account_type)); android.os.Process.killProcess(android.os.Process.myPid());*/ diff --git a/app/src/main/java/org/linphone/assistant/AssistantActivity.java b/app/src/main/java/org/linphone/assistant/AssistantActivity.java index 996f356e5..a18883829 100644 --- a/app/src/main/java/org/linphone/assistant/AssistantActivity.java +++ b/app/src/main/java/org/linphone/assistant/AssistantActivity.java @@ -154,7 +154,9 @@ public abstract class AssistantActivity extends LinphoneGenericActivity } else { // If this isn't a sip.linphone.org account, disable push notifications and enable // service notification, otherwise incoming calls won't work (most probably) - proxyConfig.setPushNotificationAllowed(false); + if (proxyConfig != null) { + proxyConfig.setPushNotificationAllowed(false); + } Log.w( "[Assistant] Unknown domain used, push probably won't work, enable service mode"); LinphonePreferences.instance().setServiceNotificationVisibility(true); diff --git a/app/src/main/java/org/linphone/call/CallIncomingActivity.java b/app/src/main/java/org/linphone/call/CallIncomingActivity.java index 37ec97182..a21d50187 100644 --- a/app/src/main/java/org/linphone/call/CallIncomingActivity.java +++ b/app/src/main/java/org/linphone/call/CallIncomingActivity.java @@ -280,6 +280,7 @@ public class CallIncomingActivity extends LinphoneGenericActivity { permissionsList.add(Manifest.permission.READ_PHONE_STATE); } if (LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests() + && mCall != null && mCall.getRemoteParams().videoEnabled()) { if (camera != PackageManager.PERMISSION_GRANTED) { Log.i("[Permission] Asking for camera"); diff --git a/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java b/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java index d8614fabd..c4941371a 100644 --- a/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java +++ b/app/src/main/java/org/linphone/contacts/AsyncContactsLoader.java @@ -144,25 +144,31 @@ class AsyncContactsLoader extends AsyncTask