package com.metis.base;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.widget.Toast;
import com.metis.base.activity.BrowserActivity;
import com.metis.base.activity.FansActivity;
import com.metis.base.activity.FollowActivity;
import com.metis.base.activity.PlayerActivity;
import com.metis.base.activity.RegisterActivity;
import com.metis.base.activity.RoleChooseActivity;
import com.metis.base.module.User;
import com.metis.base.utils.Log;
import com.metis.base.utils.PatternUtils;
import com.metis.base.widget.ImagePreviewable;
import java.io.File;
import java.io.Serializable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Beak on 2015/7/16.
*/
public class ActivityDispatcher {
public static final String
ACTION_USER = "com.metis.meishuquan.action.user",
ACTION_IMAGE_PREVIEW = "com.metis.meishuquan.action.image_preview",
ACTION_LOGIN = "com.metis.meishuquan.action.login",
ACTION_MAIN = "com.metis.meishuquan.action.main",
ACTION_SHARE = "com.metis.meishuquan.action.share",
ACTION_CIRCLE_SHARE = "com.metis.meishuquan.action.circle_share";
public static final String
KEY_USER_ID = "user_id",
KEY_IMAGES = "images",
KEY_INDEX = "index",
KEY_STATUS = "status",
KEY_MODE = "key_mode",
KEY_USER = "key_user",
KEY_TITLE = "title",
KEY_TEXT = "text",
KEY_IMAGE_URL = "image_url",
KEY_URL = "url",
KEY_ID = "id",
KEY_REPLY_TYPE = "REPLY_TYPE",
KEY_REPLY_ID = "REPLY_ID",
TITLE = "TITLE",
CONTENT = "CONTENT",
IMAGEURL = "IMAGEURL",
INPUT_CONTENT = "INPUT_CONTENT",
KEY_CAN_GO_OUT = "key_can_go_out";
public static final int REQUEST_CODE_LOGIN = 100;
public static void followsActivity (Context context, long userId) {
Intent it = new Intent(context, FollowActivity.class);
it.putExtra(KEY_USER_ID, userId);
context.startActivity(it);
}
public static void fansActivity (Context context, long userId) {
Intent it = new Intent(context, FansActivity.class);
it.putExtra(KEY_USER_ID, userId);
context.startActivity(it);
}
public static void userActivity (Context context, long userId) {
try {
Intent it = new Intent(ACTION_USER);
it.putExtra(KEY_USER_ID, userId);
it.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "userActivity exception", Toast.LENGTH_SHORT).show();
}
}
public static void userActivity (Context context, User user) {
try {
Intent it = new Intent(ACTION_USER);
it.putExtra(KEY_USER, (Serializable)user);
it.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "userActivity exception", Toast.LENGTH_SHORT).show();
}
}
public static void imagePreviewActivity (Context context, ImagePreviewable[] imagePreviewables, int index) {
try {
Intent it = new Intent(ACTION_IMAGE_PREVIEW);
it.putExtra(KEY_IMAGES, imagePreviewables);
it.putExtra(KEY_INDEX, index);
it.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "imagePreviewActivity exception", Toast.LENGTH_SHORT).show();
}
}
public static void imagePreviewActivity (Context context, ImagePreviewable[] imagePreviewables) {
imagePreviewActivity(context, imagePreviewables, 0);
}
public static void imagePreviewActivity (Context context, ImagePreviewable imagePreviewables) {
ImagePreviewable[] array = new ImagePreviewable[1];
array[0] = imagePreviewables;
imagePreviewActivity(context, array);
}
public static void getImage (Activity context, int requestCode) {
Intent it = new Intent (Intent.ACTION_GET_CONTENT);
it.setType("image/*");
context.startActivityForResult(it, requestCode);
}
public static void captureImage (Activity activity, int requestCode, String path) {
Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
activity.startActivityForResult(it, requestCode);
}
public static void loginActivity (Context context) {
try {
Intent it = new Intent ();
it.putExtra(KEY_STATUS, false);
it.setAction(ACTION_LOGIN);
it.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "loginActivityWhenAlreadyIn exception", Toast.LENGTH_SHORT).show();
}
}
public static void loginActivityWhenAlreadyIn (Context context) {
try {
Intent it = new Intent ();
it.putExtra(KEY_STATUS, true);
it.setAction(ACTION_LOGIN);
it.addCategory(Intent.CATEGORY_DEFAULT);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (context instanceof Activity) {
((Activity)context).startActivityForResult(it, REQUEST_CODE_LOGIN);
} else {
context.startActivity(it);
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(context, "loginActivityWhenAlreadyIn exception", Toast.LENGTH_SHORT).show();
}
}
public static void resetPwdActivity (Context context) {
Intent it = new Intent (context, RegisterActivity.class);
it.putExtra(KEY_MODE, RegisterActivity.MODE_RESET_PWD);
context.startActivity(it);
}
public static void mainActivity (Context context) {
Intent it = new Intent(ACTION_MAIN);
it.addCategory(Intent.CATEGORY_DEFAULT);
context.startActivity(it);
}
public static void userRoleActivity (Context context, User user, boolean isAlreadyIn) {
Intent it = new Intent(context, RoleChooseActivity.class);
it.putExtra(KEY_STATUS, isAlreadyIn);
it.putExtra(KEY_USER, (Serializable) user);
context.startActivity(it);
}
public static void shareActivity (Context context, long id, String title, String text, String imageUrl, String url) {
try {
Intent it = new Intent(ACTION_SHARE);
it.addCategory(Intent.CATEGORY_DEFAULT);
it.putExtra(KEY_ID, id);
it.putExtra(KEY_TITLE, title);
it.putExtra(KEY_TEXT, text);
it.putExtra(KEY_IMAGE_URL, imageUrl);
it.putExtra(KEY_URL, url);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void shareActivity (Context context, String title, String text, String imageUrl, String url) {
try {
Intent it = new Intent(ACTION_SHARE);
it.addCategory(Intent.CATEGORY_DEFAULT);
it.putExtra(KEY_TITLE, title);
it.putExtra(KEY_TEXT, text);
it.putExtra(KEY_IMAGE_URL, imageUrl);
it.putExtra(KEY_URL, url);
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
}
}
/*KEY_REPLY_TYPE = "REPLY_TYPE",
KEY_REPLY_ID = "REPLY_ID",
TITLE = "TITLE",
CONTENT = "CONTENT",
IMAGEURL = "IMAGEURL",
INPUT_CONTENT = "INPUT_CONTENT";*/
public static void circleShareActivity (Context context, long id, String title, String text, String imageUrl, String url) {
try {
Intent it = new Intent(ACTION_CIRCLE_SHARE);
it.addCategory(Intent.CATEGORY_DEFAULT);
it.putExtra(KEY_REPLY_ID, id);
it.putExtra(KEY_REPLY_TYPE, 2);
it.putExtra(TITLE, title);
it.putExtra(CONTENT, text);
it.putExtra(IMAGEURL, imageUrl);
/*it.putExtra(KEY_ID, id);
it.putExtra(KEY_TITLE, title);
it.putExtra(KEY_TEXT, text);
it.putExtra(KEY_IMAGE_URL, imageUrl);
it.putExtra(KEY_URL, url);*/
context.startActivity(it);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void innerBrowserActivity (Context context, String url) {
innerBrowserActivity(context, url, false);
}
public static void innerBrowserActivity(Context context, String url, boolean canGoOut) {
Intent it = new Intent(context, BrowserActivity.class);
it.putExtra(KEY_URL, url);
it.putExtra(KEY_CAN_GO_OUT, canGoOut);
context.startActivity(it);
}
public static void outBrowserActivity (Context context, String url) {
try {
url = PatternUtils.deleteUidInfosInUrl(url);
Intent it = new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse(url));
context.startActivity(it);
} catch (Exception e) {
Toast.makeText(context, R.string.toast_app_not_found_for_this_action, Toast.LENGTH_SHORT).show();
}
}
public static void playVideo (Context context, String url) {
Intent it = new Intent(context, PlayerActivity.class);
it.putExtra(KEY_URL, url);
context.startActivity(it);
}
}