diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java index 512342fd0..50bff36c3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java @@ -1,6 +1,7 @@ package org.briarproject.briar.android.conversation; import android.annotation.SuppressLint; +import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -121,6 +122,7 @@ import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt; import static android.os.Build.VERSION.SDK_INT; import static android.view.Gravity.RIGHT; +import static android.widget.Toast.LENGTH_LONG; import static android.widget.Toast.LENGTH_SHORT; import static androidx.core.app.ActivityOptionsCompat.makeSceneTransitionAnimation; import static androidx.lifecycle.Lifecycle.State.STARTED; @@ -774,7 +776,12 @@ public class ConversationActivity extends BriarActivity @Override public void onAttachImageClicked() { - launcher.launch("image/*"); + try { + launcher.launch("image/*"); + } catch (ActivityNotFoundException e) { + Toast.makeText(this, R.string.error_start_activity, + LENGTH_LONG).show(); + } } private void onImagesChosen(@Nullable List uris) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java index f56a3184c..13ae078de 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java @@ -1,5 +1,6 @@ package org.briarproject.briar.android.removabledrive; +import android.content.ActivityNotFoundException; import android.content.Context; import android.net.Uri; import android.os.Bundle; @@ -68,9 +69,14 @@ public class ReceiveFragment extends Fragment { scrollView = (ScrollView) v; progressBar = v.findViewById(R.id.progressBar); button = v.findViewById(R.id.fileButton); - button.setOnClickListener(view -> - launcher.launch("*/*") - ); + button.setOnClickListener(view -> { + try { + launcher.launch("*/*"); + } catch (ActivityNotFoundException e) { + Toast.makeText(requireContext(), + R.string.error_start_activity, LENGTH_LONG).show(); + } + }); viewModel.getOldTaskResumedEvent() .observeEvent(getViewLifecycleOwner(), this::onOldTaskResumed); viewModel.getState() diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java index d1235ff17..59614fee1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java @@ -1,5 +1,6 @@ package org.briarproject.briar.android.removabledrive; +import android.content.ActivityNotFoundException; import android.content.Context; import android.net.Uri; import android.os.Bundle; @@ -73,9 +74,14 @@ public class SendFragment extends Fragment { introTextView = v.findViewById(R.id.introTextView); progressBar = v.findViewById(R.id.progressBar); button = v.findViewById(R.id.fileButton); - button.setOnClickListener(view -> - launcher.launch(viewModel.getFileName()) - ); + button.setOnClickListener(view -> { + try { + launcher.launch(viewModel.getFileName()); + } catch (ActivityNotFoundException e) { + Toast.makeText(requireContext(), + R.string.error_start_activity, LENGTH_LONG).show(); + } + }); viewModel.getOldTaskResumedEvent() .observeEvent(getViewLifecycleOwner(), this::onOldTaskResumed); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java index 219c43891..e6ffbfce4 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java @@ -1,10 +1,12 @@ package org.briarproject.briar.android.settings; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; +import android.widget.Toast; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; @@ -23,6 +25,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceGroup; +import static android.widget.Toast.LENGTH_LONG; import static java.util.Objects.requireNonNull; import static org.briarproject.briar.android.AppModule.getAndroidComponent; import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD; @@ -65,7 +68,12 @@ public class SettingsFragment extends PreferenceFragmentCompat { prefAvatar = requireNonNull(findPreference(PREF_KEY_AVATAR)); if (viewModel.shouldEnableProfilePictures()) { prefAvatar.setOnPreferenceClickListener(preference -> { - launcher.launch("image/*"); + try { + launcher.launch("image/*"); + } catch (ActivityNotFoundException e) { + Toast.makeText(requireContext(), + R.string.error_start_activity, LENGTH_LONG).show(); + } return true; }); } else {