From f88c3e3159311f9af06da167a0a298d95d5511b9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 11 Dec 2019 10:08:42 +0100 Subject: [PATCH] More fixes from crash reported by Google Play Store --- .../contacts/ContactDetailsFragment.java | 6 +++- .../linphone/contacts/LinphoneContact.java | 30 +++++++++++-------- .../history/HistoryDetailFragment.java | 6 +++- .../settings/NetworkSettingsFragment.java | 6 +++- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java index 04f253a0a..02e8d3bc1 100644 --- a/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java +++ b/app/src/main/java/org/linphone/contacts/ContactDetailsFragment.java @@ -367,12 +367,16 @@ public class ContactDetailsFragment extends Fragment implements ContactsUpdatedL if (core == null) return; Address participant = Factory.instance().createAddress(tag); + if (participant == null) { + Log.e("[Contact Detail] Couldn't parse ", tag); + return; + } ProxyConfig defaultProxyConfig = core.getDefaultProxyConfig(); if (defaultProxyConfig != null) { ChatRoom room = core.findOneToOneChatRoom( - defaultProxyConfig.getContact(), participant, isSecured); + defaultProxyConfig.getIdentityAddress(), participant, isSecured); if (room != null) { ((ContactsActivity) getActivity()) .showChatRoom(room.getLocalAddress(), room.getPeerAddress()); diff --git a/app/src/main/java/org/linphone/contacts/LinphoneContact.java b/app/src/main/java/org/linphone/contacts/LinphoneContact.java index 23e257bcc..482d7d25f 100644 --- a/app/src/main/java/org/linphone/contacts/LinphoneContact.java +++ b/app/src/main/java/org/linphone/contacts/LinphoneContact.java @@ -531,18 +531,24 @@ public class LinphoneContact extends AndroidContact } private synchronized void syncValuesFromAndroidContact(Context context) { - Cursor c = - context.getContentResolver() - .query( - ContactsContract.Data.CONTENT_URI, - AsyncContactsLoader.PROJECTION, - ContactsContract.Data.IN_DEFAULT_DIRECTORY - + " == 1 AND " - + ContactsContract.Data.CONTACT_ID - + " == " - + mAndroidId, - null, - null); + Cursor c = null; + try { + c = + context.getContentResolver() + .query( + ContactsContract.Data.CONTENT_URI, + AsyncContactsLoader.PROJECTION, + ContactsContract.Data.IN_DEFAULT_DIRECTORY + + " == 1 AND " + + ContactsContract.Data.CONTACT_ID + + " == " + + mAndroidId, + null, + null); + } catch (SecurityException se) { + Log.e("[Contact] Security exception: ", se); + } + if (c != null) { mAddresses = new ArrayList<>(); while (c.moveToNext()) { diff --git a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java index 624adddac..6fbcb484a 100644 --- a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java @@ -260,12 +260,16 @@ public class HistoryDetailFragment extends Fragment { if (core == null) return; Address participant = Factory.instance().createAddress(mSipUri); + if (participant == null) { + Log.e("[History Detail] Couldn't parse ", mSipUri); + return; + } ProxyConfig defaultProxyConfig = core.getDefaultProxyConfig(); if (defaultProxyConfig != null) { ChatRoom room = core.findOneToOneChatRoom( - defaultProxyConfig.getContact(), participant, isSecured); + defaultProxyConfig.getIdentityAddress(), participant, isSecured); if (room != null) { ((HistoryActivity) getActivity()) .showChatRoom(room.getLocalAddress(), room.getPeerAddress()); diff --git a/app/src/main/java/org/linphone/settings/NetworkSettingsFragment.java b/app/src/main/java/org/linphone/settings/NetworkSettingsFragment.java index 6b3d44069..1aeaca3fd 100644 --- a/app/src/main/java/org/linphone/settings/NetworkSettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/NetworkSettingsFragment.java @@ -198,7 +198,11 @@ public class NetworkSettingsFragment extends SettingsFragment { mPrefs.powerSaverDialogPrompted(true); Intent intent = DeviceUtils.getDevicePowerManagerIntent(getActivity()); if (intent != null) { - startActivity(intent); + try { + startActivity(intent); + } catch (SecurityException se) { + Log.e("[Network Settings] Security exception: ", se); + } } } });