NaTo1000's picture
download
raw
6.49 kB
package com.termux.shared.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.termux.shared.errors.Error;
import com.termux.shared.errors.FunctionErrno;
public class ActivityUtils {
private static final String LOG_TAG = "ActivityUtils";
/**
* Wrapper for {@link #startActivity(Context, Intent, boolean, boolean)}.
*/
public static Error startActivity(@NonNull Context context, @NonNull Intent intent) {
return startActivity(context, intent, true, true);
}
/**
* Start an {@link Activity}.
*
* @param context The context for operations.
* @param intent The {@link Intent} to send to start the activity.
* @param logErrorMessage If an error message should be logged if failed to start activity.
* @param showErrorMessage If an error message toast should be shown if failed to start activity
* in addition to logging a message. The {@code context} must not be
* {@code null}.
* @return Returns the {@code error} if starting activity was not successful, otherwise {@code null}.
*/
public static Error startActivity(Context context, @NonNull Intent intent,
boolean logErrorMessage, boolean showErrorMessage) {
Error error;
String activityName = intent.getComponent() != null ? intent.getComponent().getClassName() : "Unknown";
if (context == null) {
error = ActivityErrno.ERRNO_STARTING_ACTIVITY_WITH_NULL_CONTEXT.getError(activityName);
if (logErrorMessage)
error.logErrorAndShowToast(null, LOG_TAG);
return error;
}
try {
context.startActivity(intent);
} catch (Exception e) {
error = ActivityErrno.ERRNO_START_ACTIVITY_FAILED_WITH_EXCEPTION.getError(e, activityName, e.getMessage());
if (logErrorMessage)
error.logErrorAndShowToast(showErrorMessage ? context : null, LOG_TAG);
return error;
}
return null;
}
/**
* Wrapper for {@link #startActivityForResult(Context, int, Intent, boolean, boolean, ActivityResultLauncher)}.
*/
public static Error startActivityForResult(Context context, int requestCode, @NonNull Intent intent) {
return startActivityForResult(context, requestCode, intent, true, true, null);
}
/**
* Wrapper for {@link #startActivityForResult(Context, int, Intent, boolean, boolean, ActivityResultLauncher)}.
*/
public static Error startActivityForResult(Context context, int requestCode, @NonNull Intent intent,
boolean logErrorMessage, boolean showErrorMessage) {
return startActivityForResult(context, requestCode, intent, logErrorMessage, showErrorMessage, null);
}
/**
* Start an {@link Activity} for result.
*
* @param context The context for operations. It must be an instance of {@link Activity} or
* {@link AppCompatActivity}. It is ignored if {@code activityResultLauncher}
* is not {@code null}.
* @param requestCode The request code to use while sending intent. This must be >= 0, otherwise
* exception will be raised. This is ignored if {@code activityResultLauncher}
* is {@code null}.
* @param intent The {@link Intent} to send to start the activity.
* @param logErrorMessage If an error message should be logged if failed to start activity.
* @param showErrorMessage If an error message toast should be shown if failed to start activity
* in addition to logging a message. The {@code context} must not be
* {@code null}.
* @param activityResultLauncher The {@link ActivityResultLauncher<Intent>} to use for start the
* activity. If this is {@code null}, then
* {@link Activity#startActivityForResult(Intent, int)} will be
* used instead.
* Note that later is deprecated.
* @return Returns the {@code error} if starting activity was not successful, otherwise {@code null}.
*/
public static Error startActivityForResult(Context context, int requestCode, @NonNull Intent intent,
boolean logErrorMessage, boolean showErrorMessage,
@Nullable ActivityResultLauncher<Intent> activityResultLauncher) {
Error error;
String activityName = intent.getComponent() != null ? intent.getComponent().getClassName() : "Unknown";
try {
if (activityResultLauncher != null) {
activityResultLauncher.launch(intent);
} else {
if (context == null) {
error = ActivityErrno.ERRNO_STARTING_ACTIVITY_WITH_NULL_CONTEXT.getError(activityName);
if (logErrorMessage)
error.logErrorAndShowToast(null, LOG_TAG);
return error;
}
if (context instanceof AppCompatActivity)
((AppCompatActivity) context).startActivityForResult(intent, requestCode);
else if (context instanceof Activity)
((Activity) context).startActivityForResult(intent, requestCode);
else {
error = FunctionErrno.ERRNO_PARAMETER_NOT_INSTANCE_OF.getError("context", "startActivityForResult", "Activity or AppCompatActivity");
if (logErrorMessage)
error.logErrorAndShowToast(showErrorMessage ? context : null, LOG_TAG);
return error;
}
}
} catch (Exception e) {
error = ActivityErrno.ERRNO_START_ACTIVITY_FOR_RESULT_FAILED_WITH_EXCEPTION.getError(e, activityName, e.getMessage());
if (logErrorMessage)
error.logErrorAndShowToast(showErrorMessage ? context : null, LOG_TAG);
return error;
}
return null;
}
}

Xet Storage Details

Size:
6.49 kB
·
Xet hash:
cf5f4ee8584862c529cd19d3c0f7c1bb3177eea26231c855aaad76c0d981fa73

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.