From 4ac20cc8c7facb6253dcd52cc6c1381502bfc601 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sun, 7 Apr 2019 18:48:56 +0200 Subject: [PATCH] Better workaround for infinite loop --- app/src/main/java/org/linphone/LinphoneActivity.java | 9 +++++++++ app/src/main/java/org/linphone/LinphoneService.java | 10 ---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index 58740245d..139486a8f 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -27,6 +27,7 @@ import android.app.Dialog; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; +import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -1337,6 +1338,14 @@ public class LinphoneActivity extends LinphoneGenericActivity protected void onStart() { super.onStart(); + KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); + boolean locked = km.inKeyguardRestrictedInputMode(); + if (locked) { + // This is to workaround an infinite loop of pause/start in LinphoneActivity issue + // if incoming call ends while screen if off and locked + finish(); + } + ArrayList permissionsToAskFor = new ArrayList<>(); String[] permissionsToHave = { // This one is to allow floating notifications diff --git a/app/src/main/java/org/linphone/LinphoneService.java b/app/src/main/java/org/linphone/LinphoneService.java index 427b0be6a..a4150374f 100644 --- a/app/src/main/java/org/linphone/LinphoneService.java +++ b/app/src/main/java/org/linphone/LinphoneService.java @@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import android.app.Activity; import android.app.Application; import android.app.Service; -import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; @@ -30,7 +29,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; -import android.os.PowerManager; import android.provider.ContactsContract; import android.view.WindowManager; import java.util.ArrayList; @@ -434,15 +432,7 @@ public final class LinphoneService extends Service { } private void onIncomingReceived() { - PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); Intent intent = new Intent().setClass(this, mIncomingReceivedActivity); - - if (!pm.isInteractive()) { - // This is to workaround an infinite loop of pause/start in LinphoneActivity issue - // if incoming call is being stopped by caller while screen if off and locked - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); - } - if (LinphoneActivity.isInstanciated()) { LinphoneActivity.instance().startActivity(intent); } else {