package com.jdroid.android.activity;
import java.io.Serializable;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import com.jdroid.android.application.AbstractApplication;
/**
* Launcher for all the activities of the application
*/
public class ActivityLauncher {
/**
* Launches the {@link AbstractApplication#getHomeActivityClass()}
*/
public static void launchHomeActivity() {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != AbstractApplication.get().getHomeActivityClass()) {
Intent intent = new Intent(currentActivity, AbstractApplication.get().getHomeActivityClass());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
currentActivity.startActivity(intent);
}
}
public static void launchActivityClearTask(Class<? extends Activity> targetActivityClass,
Boolean requiresAuthentication) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
Intent intent = new Intent(AbstractApplication.get(), targetActivityClass);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
currentActivity.startActivity(intent);
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
currentActivity.startActivity(intent);
}
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
* @param requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass, int requestCode) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
currentActivity.startActivityForResult(intent, requestCode);
}
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
* @param extraName The extra name
* @param extraValue The extra value
* @param requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass, String extraName,
Serializable extraValue, int requestCode) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
intent.putExtra(extraName, extraValue);
currentActivity.startActivityForResult(intent, requestCode);
}
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
* @param extraName The extra name
* @param extraValue The extra value
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass, String extraName,
Serializable extraValue) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
intent.putExtra(extraName, extraValue);
currentActivity.startActivity(intent);
}
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
* @param bundle The extra {@link Bundle}
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass, Bundle bundle) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
if (bundle != null) {
intent.putExtras(bundle);
}
currentActivity.startActivity(intent);
}
}
/**
* Launches a new {@link Activity}
*
* @param targetActivityClass The target {@link Activity} class to launch
* @param bundle The extra {@link Bundle}
* @param requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
*/
public static void launchActivity(Class<? extends Activity> targetActivityClass, Bundle bundle, int requestCode) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
if (currentActivity.getClass() != targetActivityClass) {
Intent intent = new Intent(currentActivity, targetActivityClass);
intent.putExtras(bundle);
currentActivity.startActivityForResult(intent, requestCode);
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static void launchViewActivity(String uriString) {
Activity currentActivity = AbstractApplication.get().getCurrentActivity();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
currentActivity.startActivity(intent);
}
}