From ec00aecf8de4306d301d8e852053095b9becaae4 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 11 Feb 2019 14:15:29 +0100 Subject: [PATCH] Fixed crash on Android < 7 --- .../org/linphone/compatibility/ApiTwentyFourPlus.java | 5 +++++ .../org/linphone/compatibility/ApiTwentyOnePlus.java | 5 +++++ .../java/org/linphone/compatibility/Compatibility.java | 9 +++++++++ .../main/java/org/linphone/contacts/ContactsManager.java | 3 ++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentyFourPlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentyFourPlus.java index 7e7242722..96bb34636 100644 --- a/app/src/main/java/org/linphone/compatibility/ApiTwentyFourPlus.java +++ b/app/src/main/java/org/linphone/compatibility/ApiTwentyFourPlus.java @@ -32,6 +32,7 @@ import android.annotation.TargetApi; import android.app.Notification; import android.app.PendingIntent; import android.app.RemoteInput; +import android.content.ContentProviderClient; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -211,4 +212,8 @@ class ApiTwentyFourPlus { .build(); return declineAction; } + + public static void closeContentProviderClient(ContentProviderClient client) { + client.close(); + } } diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java index 9802b5e77..5c9067d33 100644 --- a/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java +++ b/app/src/main/java/org/linphone/compatibility/ApiTwentyOnePlus.java @@ -22,6 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import android.annotation.TargetApi; import android.app.Notification; import android.app.PendingIntent; +import android.content.ContentProviderClient; import android.content.Context; import android.graphics.Bitmap; import androidx.core.content.ContextCompat; @@ -193,4 +194,8 @@ class ApiTwentyOnePlus { .setShowWhen(true) .build(); } + + public static void closeContentProviderClient(ContentProviderClient client) { + client.release(); + } } diff --git a/app/src/main/java/org/linphone/compatibility/Compatibility.java b/app/src/main/java/org/linphone/compatibility/Compatibility.java index f811d56e3..2d279c7b8 100644 --- a/app/src/main/java/org/linphone/compatibility/Compatibility.java +++ b/app/src/main/java/org/linphone/compatibility/Compatibility.java @@ -22,6 +22,7 @@ import android.app.FragmentTransaction; import android.app.Notification; import android.app.PendingIntent; import android.bluetooth.BluetoothAdapter; +import android.content.ContentProviderClient; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -187,4 +188,12 @@ public class Compatibility { ApiTwentySixPlus.setFragmentTransactionReorderingAllowed(transaction, allowed); } } + + public static void closeContentProviderClient(ContentProviderClient client) { + if (Version.sdkAboveOrEqual(Version.API24_NOUGAT_70)) { + ApiTwentyFourPlus.closeContentProviderClient(client); + } else { + ApiTwentyOnePlus.closeContentProviderClient(client); + } + } } diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.java b/app/src/main/java/org/linphone/contacts/ContactsManager.java index 35c46bba5..f5af996ca 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.java +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.java @@ -46,6 +46,7 @@ import org.linphone.LinphoneActivity; import org.linphone.LinphoneManager; import org.linphone.LinphoneService; import org.linphone.R; +import org.linphone.compatibility.Compatibility; import org.linphone.core.Address; import org.linphone.core.Core; import org.linphone.core.Friend; @@ -325,7 +326,7 @@ public class ContactsManager extends ContentObserver implements FriendListListen } catch (RemoteException e) { Log.e("[Contacts Manager] Couldn't make contacts account visible: " + e); } - client.close(); + Compatibility.closeContentProviderClient(client); } private void initializeSyncAccount() {