Introduce tryToStartActivity() helper method

This commit is contained in:
Torsten Grote
2023-06-28 14:49:36 -03:00
parent fa216ffc6f
commit 3d237a9104
8 changed files with 27 additions and 78 deletions

View File

@@ -1,10 +1,8 @@
package org.briarproject.briar.android.account; package org.briarproject.briar.android.account;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.Toast;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@@ -14,9 +12,9 @@ import javax.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.annotation.UiThread; 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.getHuaweiProtectedAppsIntent;
import static org.briarproject.android.dontkillmelib.HuaweiUtils.protectedAppsNeedsToBeShown; import static org.briarproject.android.dontkillmelib.HuaweiUtils.protectedAppsNeedsToBeShown;
import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@UiThread @UiThread
@NotNullByDefault @NotNullByDefault
@@ -52,13 +50,7 @@ class HuaweiProtectedAppsView extends PowerView {
@Override @Override
protected void onButtonClick() { protected void onButtonClick() {
Context ctx = getContext(); tryToStartActivity(getContext(), getHuaweiProtectedAppsIntent());
try {
ctx.startActivity(getHuaweiProtectedAppsIntent());
} catch (ActivityNotFoundException e) {
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG)
.show();
}
setChecked(true); setChecked(true);
} }
} }

View File

@@ -3,7 +3,6 @@ package org.briarproject.briar.android.fragment;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@@ -13,7 +12,6 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.BaseActivity; 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.os.Build.VERSION.SDK_INT;
import static android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION; import static android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.widget.Toast.LENGTH_LONG; import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -103,13 +101,7 @@ public class ScreenFilterDialogFragment extends DialogFragment {
builder.setNeutralButton(R.string.screen_filter_review_apps, builder.setNeutralButton(R.string.screen_filter_review_apps,
(dialog, which) -> { (dialog, which) -> {
Intent i = new Intent(ACTION_MANAGE_OVERLAY_PERMISSION); Intent i = new Intent(ACTION_MANAGE_OVERLAY_PERMISSION);
try { tryToStartActivity(requireActivity(), i);
startActivity(i);
} catch (ActivityNotFoundException e) {
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG)
.show();
}
}); });
} }
builder.setPositiveButton(R.string.continue_button, (dialog, which) -> { builder.setPositiveButton(R.string.continue_button, (dialog, which) -> {

View File

@@ -1,6 +1,5 @@
package org.briarproject.briar.android.hotspot; package org.briarproject.briar.android.hotspot;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@@ -10,7 +9,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.Toast;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.fragment.BaseFragment; 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.content.Intent.FLAG_GRANT_READ_URI_PERMISSION;
import static android.view.View.INVISIBLE; import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static android.widget.Toast.LENGTH_LONG;
import static androidx.transition.TransitionManager.beginDelayedTransition; import static androidx.transition.TransitionManager.beginDelayedTransition;
import static org.briarproject.briar.android.AppModule.getAndroidComponent; import static org.briarproject.briar.android.AppModule.getAndroidComponent;
import static org.briarproject.briar.android.hotspot.HotspotViewModel.getApkFileName; import static org.briarproject.briar.android.hotspot.HotspotViewModel.getApkFileName;
import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -105,12 +103,7 @@ public class FallbackFragment extends BaseFragment {
i.putExtra(EXTRA_STREAM, uri); i.putExtra(EXTRA_STREAM, uri);
i.setType("*/*"); // gives us all sharing options i.setType("*/*"); // gives us all sharing options
i.addFlags(FLAG_GRANT_READ_URI_PERMISSION); i.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
try { tryToStartActivity(requireActivity(), Intent.createChooser(i, null));
startActivity(Intent.createChooser(i, null));
} catch (ActivityNotFoundException e) {
Toast.makeText(requireContext(), R.string.error_start_activity,
LENGTH_LONG).show();
}
} }
} }

View File

@@ -1,6 +1,5 @@
package org.briarproject.briar.android.reporting; package org.briarproject.briar.android.reporting;
import android.content.ActivityNotFoundException;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@@ -33,13 +32,11 @@ import androidx.recyclerview.widget.RecyclerView;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.INVISIBLE; import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static android.widget.Toast.LENGTH_LONG;
import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.LENGTH_SHORT;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; 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.onSingleLinkClick;
import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -180,13 +177,7 @@ public class ReportFormFragment extends BaseFragment {
private void triggerPrivacyPolicy() { private void triggerPrivacyPolicy() {
Intent i = new Intent(Intent.ACTION_VIEW); Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("https://briarproject.org/privacy-policy/\\")); i.setData(Uri.parse("https://briarproject.org/privacy-policy/\\"));
try { tryToStartActivity(requireActivity(), i);
startActivity(i);
} catch (ActivityNotFoundException e) {
logException(LOG, WARNING, e);
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG).show();
}
} }
} }

View File

@@ -1,6 +1,5 @@
package org.briarproject.briar.android.settings; package org.briarproject.briar.android.settings;
import android.content.ActivityNotFoundException;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
@@ -8,7 +7,6 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import org.briarproject.briar.BuildConfig; import org.briarproject.briar.BuildConfig;
import org.briarproject.briar.R; import org.briarproject.briar.R;
@@ -21,10 +19,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import static android.widget.Toast.LENGTH_LONG; import static android.content.Intent.ACTION_VIEW;
import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; 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 @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -85,16 +82,9 @@ public class AboutFragment extends Fragment {
} }
private void goToUrl(String url) { private void goToUrl(String url) {
Intent i = new Intent(Intent.ACTION_VIEW); Intent i = new Intent(ACTION_VIEW);
i.setData(Uri.parse(url)); i.setData(Uri.parse(url));
try { tryToStartActivity(requireActivity(), i);
startActivity(i);
} catch (ActivityNotFoundException e) {
logException(LOG, WARNING, e);
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG).show();
}
} }
} }

View File

@@ -1,12 +1,10 @@
package org.briarproject.briar.android.settings; package org.briarproject.briar.android.settings;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.Toast;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.mailbox.MailboxActivity; 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.ACTION_SEND;
import static android.content.Intent.EXTRA_TEXT; import static android.content.Intent.EXTRA_TEXT;
import static android.widget.Toast.LENGTH_LONG;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
import static org.briarproject.briar.android.AppModule.getAndroidComponent; import static org.briarproject.briar.android.AppModule.getAndroidComponent;
import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD; 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.launchActivityToOpenFile;
import static org.briarproject.briar.android.util.UiUtils.triggerFeedback; import static org.briarproject.briar.android.util.UiUtils.triggerFeedback;
import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -101,12 +99,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
Intent sendIntent = new Intent(ACTION_SEND); Intent sendIntent = new Intent(ACTION_SEND);
sendIntent.putExtra(EXTRA_TEXT, text); sendIntent.putExtra(EXTRA_TEXT, text);
sendIntent.setType("text/plain"); sendIntent.setType("text/plain");
try { tryToStartActivity(requireActivity(),
startActivity(Intent.createChooser(sendIntent, null)); Intent.createChooser(sendIntent, null));
} catch (ActivityNotFoundException e) {
Toast.makeText(requireContext(),
R.string.error_start_activity, LENGTH_LONG).show();
}
return true; return true;
}); });
Preference prefFeedback = Preference prefFeedback =

View File

@@ -1,12 +1,10 @@
package org.briarproject.briar.android.util; package org.briarproject.briar.android.util;
import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.location.LocationManager; import android.location.LocationManager;
import android.net.Uri; import android.net.Uri;
import android.widget.Toast;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.nullsafety.MethodsNotNullByDefault; 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.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION.SDK_INT;
import static android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS; 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 androidx.core.content.ContextCompat.checkSelfPermission;
import static java.lang.Boolean.TRUE; import static java.lang.Boolean.TRUE;
import static org.briarproject.briar.BuildConfig.APPLICATION_ID; import static org.briarproject.briar.BuildConfig.APPLICATION_ID;
import static org.briarproject.briar.android.util.UiUtils.tryToStartActivity;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -76,12 +74,7 @@ public class PermissionUtils {
i.addCategory(CATEGORY_DEFAULT); i.addCategory(CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + APPLICATION_ID)); i.setData(Uri.parse("package:" + APPLICATION_ID));
i.addFlags(FLAG_ACTIVITY_NEW_TASK); i.addFlags(FLAG_ACTIVITY_NEW_TASK);
try { tryToStartActivity(context, i);
context.startActivity(i);
} catch (ActivityNotFoundException e) {
Toast.makeText(context, R.string.error_start_activity,
LENGTH_LONG).show();
}
}; };
} }
@@ -128,12 +121,7 @@ public class PermissionUtils {
builder.setPositiveButton(R.string.permission_location_setting_button, builder.setPositiveButton(R.string.permission_location_setting_button,
(dialog, which) -> { (dialog, which) -> {
Intent i = new Intent(ACTION_LOCATION_SOURCE_SETTINGS); Intent i = new Intent(ACTION_LOCATION_SOURCE_SETTINGS);
try { tryToStartActivity(ctx, i);
ctx.startActivity(i);
} catch (ActivityNotFoundException e) {
Toast.makeText(ctx, R.string.error_start_activity,
LENGTH_LONG).show();
}
}); });
builder.show(); builder.show();
} }

View File

@@ -157,6 +157,15 @@ public class UiUtils {
ta.commit(); 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, public static String getContactDisplayName(Author author,
@Nullable String alias) { @Nullable String alias) {
String name = author.getName(); String name = author.getName();