diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java index b83824c08..8a332a37b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/bottomsheet/RecipientBottomSheetDialogFragment.java @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.recipients.ui.bottomsheet; import android.app.Activity; +import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.res.ColorStateList; import android.os.Bundle; @@ -23,6 +24,7 @@ import androidx.lifecycle.ViewModelProviders; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.badges.BadgeImageView; import org.thoughtcrime.securesms.badges.view.ViewBadgeBottomSheetDialogFragment; @@ -54,6 +56,8 @@ import kotlin.Unit; */ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogFragment { + public static final String TAG = Log.tag(RecipientBottomSheetDialogFragment.class); + public static final int REQUEST_CODE_SYSTEM_CONTACT_SHEET = 1111; private static final String ARGS_RECIPIENT_ID = "RECIPIENT_ID"; @@ -247,14 +251,14 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF } else { addContactButton.setVisibility(View.VISIBLE); addContactButton.setOnClickListener(v -> { - startActivityForResult(RecipientExporter.export(recipient).asAddContactIntent(), REQUEST_CODE_SYSTEM_CONTACT_SHEET); + openSystemContactSheet(RecipientExporter.export(recipient).asAddContactIntent()); }); } if (recipient.isSystemContact() && !recipient.isGroup() && !recipient.isSelf()) { contactDetailsButton.setVisibility(View.VISIBLE); contactDetailsButton.setOnClickListener(v -> { - startActivityForResult(new Intent(Intent.ACTION_VIEW, recipient.getContactUri()), REQUEST_CODE_SYSTEM_CONTACT_SHEET); + openSystemContactSheet(new Intent(Intent.ACTION_VIEW, recipient.getContactUri())); }); } else { contactDetailsButton.setVisibility(View.GONE); @@ -315,6 +319,15 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF }); } + private void openSystemContactSheet(@NonNull Intent intent) { + try { + startActivityForResult(intent, REQUEST_CODE_SYSTEM_CONTACT_SHEET); + } catch (ActivityNotFoundException e) { + Log.w(TAG, "No activity existed to open the contact."); + Toast.makeText(requireContext(), R.string.RecipientBottomSheet_unable_to_open_contacts, Toast.LENGTH_LONG).show(); + } + } + @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_SYSTEM_CONTACT_SHEET) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4b1612806..443af1ee9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3250,6 +3250,8 @@ Block Unblock Add to contacts + + Can\'t find an app able to open contacts. Add to a group Add to another group View safety number