Better workaround for infinite loop

This commit is contained in:
Sylvain Berfini 2019-04-07 18:48:56 +02:00
parent b52bd60ca3
commit 4ac20cc8c7
2 changed files with 9 additions and 10 deletions

View file

@ -27,6 +27,7 @@ import android.app.Dialog;
import android.app.Fragment; import android.app.Fragment;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.app.KeyguardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
@ -1337,6 +1338,14 @@ public class LinphoneActivity extends LinphoneGenericActivity
protected void onStart() { protected void onStart() {
super.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<String> permissionsToAskFor = new ArrayList<>(); ArrayList<String> permissionsToAskFor = new ArrayList<>();
String[] permissionsToHave = { String[] permissionsToHave = {
// This one is to allow floating notifications // This one is to allow floating notifications

View file

@ -22,7 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import android.app.Activity; import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.app.Service; import android.app.Service;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
@ -30,7 +29,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.PowerManager;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.view.WindowManager; import android.view.WindowManager;
import java.util.ArrayList; import java.util.ArrayList;
@ -434,15 +432,7 @@ public final class LinphoneService extends Service {
} }
private void onIncomingReceived() { private void onIncomingReceived() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
Intent intent = new Intent().setClass(this, mIncomingReceivedActivity); 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()) { if (LinphoneActivity.isInstanciated()) {
LinphoneActivity.instance().startActivity(intent); LinphoneActivity.instance().startActivity(intent);
} else { } else {