diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index d34cdc0c4b..20e554e20d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -122,7 +122,11 @@ public class FragmentAccounts extends FragmentBase { btnGrant.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - requestPermissions(Helper.getOAuthPermissions(), REQUEST_IMPORT_OAUTH); + try { + requestPermissions(Helper.getOAuthPermissions(), REQUEST_IMPORT_OAUTH); + } catch (Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 1f81baa3a5..58a438cd1c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -2297,12 +2297,16 @@ public class FragmentCompose extends FragmentBase { @Override protected void onException(Bundle args, Throwable ex) { - if (ex instanceof SecurityException) { - pickRequest = requestCode; - pickUri = uri; - String permission = Manifest.permission.READ_CONTACTS; - requestPermissions(new String[]{permission}, REQUEST_PERMISSION); - } else + if (ex instanceof SecurityException) + try { + pickRequest = requestCode; + pickUri = uri; + String permission = Manifest.permission.READ_CONTACTS; + requestPermissions(new String[]{permission}, REQUEST_PERMISSION); + } catch (Throwable ex1) { + Log.unexpectedError(getParentFragmentManager(), ex1); + } + else Log.unexpectedError(getParentFragmentManager(), ex); } }.execute(this, args, "compose:picked"); diff --git a/app/src/main/java/eu/faircode/email/FragmentGmail.java b/app/src/main/java/eu/faircode/email/FragmentGmail.java index d895471152..b89bc551b6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentGmail.java +++ b/app/src/main/java/eu/faircode/email/FragmentGmail.java @@ -109,7 +109,11 @@ public class FragmentGmail extends FragmentBase { btnGrant.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - requestPermissions(Helper.getOAuthPermissions(), ActivitySetup.REQUEST_CHOOSE_ACCOUNT); + try { + requestPermissions(Helper.getOAuthPermissions(), ActivitySetup.REQUEST_CHOOSE_ACCOUNT); + } catch (Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index ce2d9d6f2f..1eae6fced6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -336,9 +336,27 @@ public class FragmentSetup extends FragmentBase { btnPermissions.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - btnPermissions.setEnabled(false); - String permission = Manifest.permission.READ_CONTACTS; - requestPermissions(new String[]{permission}, ActivitySetup.REQUEST_PERMISSION); + try { + btnPermissions.setEnabled(false); + String permission = Manifest.permission.READ_CONTACTS; + requestPermissions(new String[]{permission}, ActivitySetup.REQUEST_PERMISSION); + } catch (Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + /* + android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.google.android.packageinstaller (has extras) } + at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805) + at android.app.Instrumentation.execStartActivity(Instrumentation.java:1634) + at android.app.Activity.startActivityForResult(Activity.java:4583) + at android.app.Activity.requestPermissions(Activity.java:3850) + at androidx.core.app.ActivityCompat.requestPermissions(SourceFile:11) + at androidx.activity.ComponentActivity$2.onLaunch(SourceFile:13) + at androidx.activity.result.ActivityResultRegistry$3.launch(SourceFile:2) + at androidx.activity.result.ActivityResultLauncher.launch(SourceFile:1) + at androidx.fragment.app.FragmentManager.launchRequestPermissions(SourceFile:4) + at androidx.fragment.app.Fragment.requestPermissions(SourceFile:2) + at eu.faircode.email.FragmentSetup$11.onClick(SourceFile:2) + */ + } } });