Workaround for default intent chooser bug

This commit is contained in:
M66B
2018-12-09 11:21:47 +01:00
parent 4e16d46280
commit cba925d207
7 changed files with 27 additions and 16 deletions

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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() {

View File

@@ -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);
}
});

View File

@@ -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);
}

View File

@@ -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/"));