From 3d237a91043b3f5936ac4bf204a5962f4f1618ea Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 28 Jun 2023 14:49:36 -0300 Subject: [PATCH] Introduce tryToStartActivity() helper method --- .../account/HuaweiProtectedAppsView.java | 12 ++---------- .../fragment/ScreenFilterDialogFragment.java | 12 ++---------- .../android/hotspot/FallbackFragment.java | 11 ++--------- .../android/reporting/ReportFormFragment.java | 13 ++----------- .../briar/android/settings/AboutFragment.java | 18 ++++-------------- .../android/settings/SettingsFragment.java | 12 +++--------- .../briar/android/util/PermissionUtils.java | 18 +++--------------- .../briar/android/util/UiUtils.java | 9 +++++++++ 8 files changed, 27 insertions(+), 78 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java index 225ec1265..31a3fc79f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java @@ -1,10 +1,8 @@ package org.briarproject.briar.android.account; -import android.content.ActivityNotFoundException; import android.content.Context; import android.util.AttributeSet; -import android.widget.Toast; import org.briarproject.briar.R; import org.briarproject.nullsafety.NotNullByDefault; @@ -14,9 +12,9 @@ import javax.annotation.Nullable; import androidx.annotation.StringRes; import androidx.annotation.UiThread; -import static android.widget.Toast.LENGTH_LONG; import static org.briarproject.android.dontkillmelib.HuaweiUtils.getHuaweiProtectedAppsIntent; import static org.briarproject.android.dontkillmelib.HuaweiUtils.protectedAppsNeedsToBeShown; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @UiThread @NotNullByDefault @@ -52,13 +50,7 @@ class HuaweiProtectedAppsView extends PowerView { @Override protected void onButtonClick() { - Context ctx = getContext(); - try { - ctx.startActivity(getHuaweiProtectedAppsIntent()); - } catch (ActivityNotFoundException e) { - Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG) - .show(); - } + tryToStartActivity(getContext(), getHuaweiProtectedAppsIntent()); setChecked(true); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java index 9b338009a..2e2ed6bf2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java @@ -3,7 +3,6 @@ package org.briarproject.briar.android.fragment; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; -import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -13,7 +12,6 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.TextView; -import android.widget.Toast; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.BaseActivity; @@ -35,7 +33,7 @@ import androidx.fragment.app.DialogFragment; import static android.os.Build.VERSION.SDK_INT; import static android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION; import static android.view.View.GONE; -import static android.widget.Toast.LENGTH_LONG; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -103,13 +101,7 @@ public class ScreenFilterDialogFragment extends DialogFragment { builder.setNeutralButton(R.string.screen_filter_review_apps, (dialog, which) -> { Intent i = new Intent(ACTION_MANAGE_OVERLAY_PERMISSION); - try { - startActivity(i); - } catch (ActivityNotFoundException e) { - Toast.makeText(requireContext(), - R.string.error_start_activity, LENGTH_LONG) - .show(); - } + tryToStartActivity(requireActivity(), i); }); } builder.setPositiveButton(R.string.continue_button, (dialog, which) -> { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java index 00dfcaa01..394012f8c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java @@ -1,6 +1,5 @@ package org.briarproject.briar.android.hotspot; -import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -10,7 +9,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ProgressBar; -import android.widget.Toast; import org.briarproject.briar.R; import org.briarproject.briar.android.fragment.BaseFragment; @@ -30,10 +28,10 @@ import static android.content.Intent.EXTRA_STREAM; import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; -import static android.widget.Toast.LENGTH_LONG; import static androidx.transition.TransitionManager.beginDelayedTransition; import static org.briarproject.briar.android.AppModule.getAndroidComponent; import static org.briarproject.briar.android.hotspot.HotspotViewModel.getApkFileName; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -105,12 +103,7 @@ public class FallbackFragment extends BaseFragment { i.putExtra(EXTRA_STREAM, uri); i.setType("*/*"); // gives us all sharing options i.addFlags(FLAG_GRANT_READ_URI_PERMISSION); - try { - startActivity(Intent.createChooser(i, null)); - } catch (ActivityNotFoundException e) { - Toast.makeText(requireContext(), R.string.error_start_activity, - LENGTH_LONG).show(); - } + tryToStartActivity(requireActivity(), Intent.createChooser(i, null)); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java index 8eff6d704..b915b815a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java @@ -1,6 +1,5 @@ package org.briarproject.briar.android.reporting; -import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -33,13 +32,11 @@ import androidx.recyclerview.widget.RecyclerView; import static android.view.View.GONE; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; -import static android.widget.Toast.LENGTH_LONG; import static android.widget.Toast.LENGTH_SHORT; import static java.util.Objects.requireNonNull; -import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; -import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.briar.android.util.UiUtils.onSingleLinkClick; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -180,13 +177,7 @@ public class ReportFormFragment extends BaseFragment { private void triggerPrivacyPolicy() { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse("https://briarproject.org/privacy-policy/\\")); - try { - startActivity(i); - } catch (ActivityNotFoundException e) { - logException(LOG, WARNING, e); - Toast.makeText(requireContext(), - R.string.error_start_activity, LENGTH_LONG).show(); - } + tryToStartActivity(requireActivity(), i); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java index 664e7f286..fff46763e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java @@ -1,6 +1,5 @@ package org.briarproject.briar.android.settings; -import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -8,7 +7,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; import org.briarproject.briar.BuildConfig; import org.briarproject.briar.R; @@ -21,10 +19,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import static android.widget.Toast.LENGTH_LONG; -import static java.util.logging.Level.WARNING; +import static android.content.Intent.ACTION_VIEW; import static java.util.logging.Logger.getLogger; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -85,16 +82,9 @@ public class AboutFragment extends Fragment { } private void goToUrl(String url) { - Intent i = new Intent(Intent.ACTION_VIEW); + Intent i = new Intent(ACTION_VIEW); i.setData(Uri.parse(url)); - try { - startActivity(i); - } catch (ActivityNotFoundException e) { - logException(LOG, WARNING, e); - Toast.makeText(requireContext(), - R.string.error_start_activity, LENGTH_LONG).show(); - } - + tryToStartActivity(requireActivity(), i); } } \ No newline at end of file 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 2d5ec5fc1..314c283cb 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,12 +1,10 @@ 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.briar.R; import org.briarproject.briar.android.mailbox.MailboxActivity; @@ -28,12 +26,12 @@ import androidx.preference.PreferenceGroup; import static android.content.Intent.ACTION_SEND; import static android.content.Intent.EXTRA_TEXT; -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; import static org.briarproject.briar.android.util.UiUtils.launchActivityToOpenFile; import static org.briarproject.briar.android.util.UiUtils.triggerFeedback; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -101,12 +99,8 @@ public class SettingsFragment extends PreferenceFragmentCompat { Intent sendIntent = new Intent(ACTION_SEND); sendIntent.putExtra(EXTRA_TEXT, text); sendIntent.setType("text/plain"); - try { - startActivity(Intent.createChooser(sendIntent, null)); - } catch (ActivityNotFoundException e) { - Toast.makeText(requireContext(), - R.string.error_start_activity, LENGTH_LONG).show(); - } + tryToStartActivity(requireActivity(), + Intent.createChooser(sendIntent, null)); return true; }); Preference prefFeedback = diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/PermissionUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/PermissionUtils.java index ded32de32..d1c6432a8 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/PermissionUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/PermissionUtils.java @@ -1,12 +1,10 @@ package org.briarproject.briar.android.util; -import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.location.LocationManager; import android.net.Uri; -import android.widget.Toast; import org.briarproject.briar.R; import org.briarproject.nullsafety.MethodsNotNullByDefault; @@ -29,10 +27,10 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Build.VERSION.SDK_INT; import static android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS; -import static android.widget.Toast.LENGTH_LONG; import static androidx.core.content.ContextCompat.checkSelfPermission; import static java.lang.Boolean.TRUE; import static org.briarproject.briar.BuildConfig.APPLICATION_ID; +import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -76,12 +74,7 @@ public class PermissionUtils { i.addCategory(CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + APPLICATION_ID)); i.addFlags(FLAG_ACTIVITY_NEW_TASK); - try { - context.startActivity(i); - } catch (ActivityNotFoundException e) { - Toast.makeText(context, R.string.error_start_activity, - LENGTH_LONG).show(); - } + tryToStartActivity(context, i); }; } @@ -128,12 +121,7 @@ public class PermissionUtils { builder.setPositiveButton(R.string.permission_location_setting_button, (dialog, which) -> { Intent i = new Intent(ACTION_LOCATION_SOURCE_SETTINGS); - try { - ctx.startActivity(i); - } catch (ActivityNotFoundException e) { - Toast.makeText(ctx, R.string.error_start_activity, - LENGTH_LONG).show(); - } + tryToStartActivity(ctx, i); }); builder.show(); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index 78a0e3ad2..c92d5829e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -157,6 +157,15 @@ public class UiUtils { ta.commit(); } + public static void tryToStartActivity(Context ctx, Intent intent) { + try { + ctx.startActivity(intent); + } catch (ActivityNotFoundException e) { + Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG) + .show(); + } + } + public static String getContactDisplayName(Author author, @Nullable String alias) { String name = author.getName();