From cba925d207a384f749912ef4617c27c62c9ff0db Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 9 Dec 2018 11:21:47 +0100 Subject: [PATCH] Workaround for default intent chooser bug --- .../java/eu/faircode/email/ActivityView.java | 4 ++-- .../eu/faircode/email/FragmentAccount.java | 18 ++++++++++-------- .../eu/faircode/email/FragmentCompose.java | 6 +++--- .../eu/faircode/email/FragmentOptions.java | 2 +- .../java/eu/faircode/email/FragmentSetup.java | 4 ++-- .../main/java/eu/faircode/email/Helper.java | 8 ++++++++ app/src/main/res/values/strings.xml | 1 + 7 files changed, 27 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 291075634a..0594902d90 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -828,7 +828,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB } private void onMenuInvite() { - startActivityForResult(getIntentInvite(), REQUEST_INVITE); + startActivityForResult(Helper.getChooser(this, getIntentInvite()), REQUEST_INVITE); } private void onMenuOtherApps() { @@ -1279,7 +1279,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB if (create.resolveActivity(getPackageManager()) == null) Snackbar.make(getVisibleView(), R.string.title_no_saf, Snackbar.LENGTH_LONG).show(); else - startActivityForResult(create, REQUEST_ATTACHMENT); + startActivityForResult(Helper.getChooser(this, create), REQUEST_ATTACHMENT); } private void onDecrypt(Intent intent) { diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 0f5280c266..c4f7ea86c3 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -1133,14 +1133,16 @@ public class FragmentAccount extends FragmentEx { Log.i(Helper.TAG, "Select account"); Provider provider = (Provider) spProvider.getSelectedItem(); if (provider.type != null) - startActivityForResult(newChooseAccountIntent( - null, - null, - new String[]{provider.type}, - null, - null, - null, - null), ActivitySetup.REQUEST_CHOOSE_ACCOUNT); + startActivityForResult( + Helper.getChooser(getContext(), newChooseAccountIntent( + null, + null, + new String[]{provider.type}, + null, + null, + null, + null)), + ActivitySetup.REQUEST_CHOOSE_ACCOUNT); } private void setColor(int color) { diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 07a1a6e3d2..a617ca6461 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -246,7 +246,7 @@ public class FragmentCompose extends FragmentEx { if (pick.resolveActivity(getContext().getPackageManager()) == null) Snackbar.make(view, R.string.title_no_contacts, Snackbar.LENGTH_LONG).show(); else - startActivityForResult(pick, request); + startActivityForResult(Helper.getChooser(getContext(), pick), request); } }; @@ -554,7 +554,7 @@ public class FragmentCompose extends FragmentEx { if (intent.resolveActivity(pm) == null) Snackbar.make(view, R.string.title_no_saf, Snackbar.LENGTH_LONG).show(); else - startActivityForResult(intent, ActivityCompose.REQUEST_IMAGE); + startActivityForResult(Helper.getChooser(getContext(), intent), ActivityCompose.REQUEST_IMAGE); } private void onMenuAttachment() { @@ -565,7 +565,7 @@ public class FragmentCompose extends FragmentEx { if (intent.resolveActivity(pm) == null) Snackbar.make(view, R.string.title_no_saf, Snackbar.LENGTH_LONG).show(); else - startActivityForResult(intent, ActivityCompose.REQUEST_ATTACHMENT); + startActivityForResult(Helper.getChooser(getContext(), intent), ActivityCompose.REQUEST_ATTACHMENT); } private void onMenuAddresses() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index 475f591ec7..e24ab9e275 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -218,7 +218,7 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound)); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound == null ? null : Uri.parse(sound)); - startActivityForResult(intent, ActivitySetup.REQUEST_SOUND); + startActivityForResult(Helper.getChooser(getContext(), intent), ActivitySetup.REQUEST_SOUND); } }); diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 92960d2789..c5a4f766d1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -500,7 +500,7 @@ public class FragmentSetup extends FragmentEx { private void onMenuExport() { if (Helper.isPro(getContext())) try { - startActivityForResult(getIntentExport(), ActivitySetup.REQUEST_EXPORT); + startActivityForResult(Helper.getChooser(getContext(), getIntentExport()), ActivitySetup.REQUEST_EXPORT); } catch (Throwable ex) { Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } @@ -513,7 +513,7 @@ public class FragmentSetup extends FragmentEx { private void onMenuImport() { try { - startActivityForResult(getIntentImport(), ActivitySetup.REQUEST_IMPORT); + startActivityForResult(Helper.getChooser(getContext(), getIntentImport()), ActivitySetup.REQUEST_IMPORT); } catch (Throwable ex) { Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index a441b40225..65866f1280 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -122,6 +122,14 @@ public class Helper { } } + static Intent getChooser(Context context, Intent intent) { + PackageManager pm = context.getPackageManager(); + if (pm.queryIntentActivities(intent, 0).size() == 1) + return intent; + else + return Intent.createChooser(intent, context.getString(R.string.title_select_app)); + } + static Intent getIntentPrivacy() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://email.faircode.eu/privacy/")); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 69d8f3c806..1afdedcef5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -346,6 +346,7 @@ Downloading messages can take some time, depending on the speed of the provider, internet connection and device and on the number of messages. While downloading messages the app might respond slower. Open link + Select app There is an update to version %1$s available Do you have a question or problem? Yes