349 lines
18 KiB
Java
349 lines
18 KiB
Java
package com.gh.common.util;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Parcelable;
|
|
import android.text.TextUtils;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
import com.gh.common.avoidcallback.AvoidOnResultManager;
|
|
import com.gh.common.avoidcallback.Callback;
|
|
import com.gh.gamecenter.BuildConfig;
|
|
import com.gh.gamecenter.MainActivity;
|
|
import com.gh.gamecenter.NormalActivity;
|
|
import com.gh.gamecenter.SplashScreenActivity;
|
|
import com.gh.gamecenter.normal.NormalFragment;
|
|
import com.halo.assistant.HaloApp;
|
|
import com.lightgame.utils.Utils;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import java.util.Iterator;
|
|
import java.util.Set;
|
|
|
|
|
|
/**
|
|
* @author CsHeng
|
|
* @Date 2017/4/25
|
|
* @Time 16:39
|
|
*/
|
|
|
|
public class EntranceUtils {
|
|
|
|
public static final String KEY_TO = "to";
|
|
public static final String KEY_NEXT_TO = "next_to";
|
|
public static final String KEY_NEWSID = "newsId";
|
|
public static final String KEY_GAMEID = "gameId";
|
|
public static final String KEY_GAME_ID = "game_id";
|
|
public static final String KEY_ID = "id";
|
|
public static final String KEY_URL = "url";
|
|
public static final String KEY_BUNDLE = "bundle";
|
|
public static final String KEY_GAMENAME = "gameName";
|
|
public static final String KEY_PACKAGE_MD5 = "package_md5";
|
|
public static final String HOST_ARTICLE = "article";
|
|
public static final String HOST_UPLOAD_VIDEO = "upload_video";//上传视频
|
|
public static final String HOST_VIDEO_SINGLE = "video_single";//指定视频-不能划动
|
|
public static final String HOST_VIDEO_MORE = "video_more";//指定视频-能划动
|
|
public static final String HOST_VIDEO_STREAMING_HOME = "video_streaming_home";//视频流-首页
|
|
public static final String HOST_VIDEO_STREAMING_DESC = "video_streaming_desc";//视频流-游戏介绍进入
|
|
public static final String HOST_VIDEO_COLLECTION = "video_collection";//视频合集
|
|
public static final String HOST_USERHOME = "userhome";//个人主页
|
|
public static final String HOST_VIDEO = "video";
|
|
public static final String HOST_FORUM = "forum";
|
|
public static final String HOST_CATEGORY = "category";//分类
|
|
public static final String HOST_COLUMN_COLLECTION = "column_collection";//专题合集
|
|
public static final String HOST_COMMUNITY_QUESTION_LABEL_DETAIL = "community_question_label_detail";//问题标签详情
|
|
public static final String HOST_COMMUNITY_COLUMN_DETAIL = "community_column_detail";//专栏详情
|
|
public static final String HOST_BLOCK = "block";//板块
|
|
public static final String HOST_SERVER_BLOCK = "server";//开服表板块
|
|
public static final String HOST_AMWAY_BLOCK = "amway";//安利墙板块
|
|
public static final String HOST_GAME_CALENDAR = "game_calendar";// 指定游戏的开服表页面
|
|
public static final String HOST_HISTORY_APK = "history_apk"; // 历史版本页面
|
|
public static final String HOST_HELP = "help";//Q&A
|
|
public static final String HOST_HELP_COLLECTION = "help_collection";//Q&A合集
|
|
public static final String HOST_GAME_UPLOAD = "game_upload";//游戏上传
|
|
public static final String HOST_GAME_ZONE = "game_zone";//游戏专区
|
|
public static final String HOST_COMMUNITY_ARTICLE = "community_article";
|
|
public static final String HOST_COMMUNITY_COLUMN = "community_column";
|
|
public static final String HOST_GAME = "game";
|
|
public static final String HOST_GAME_DOWNLOAD = "game_download";
|
|
public static final String HOST_GAME_NEWS = "game_news";
|
|
public static final String HOST_COLUMN = "column";
|
|
public static final String HOST_WEB = "web";
|
|
public static final String HOST_QQ = "qq";
|
|
public static final String HOST_QQ_GROUP = "qqgroup";
|
|
public static final String HOST_QQ_QUN = "qqqun";
|
|
public static final String HOST_DOWNLOAD = "download";
|
|
public static final String HOST_UPDATE = "update";
|
|
public static final String HOST_LINK = "link";
|
|
public static final String HOST_LIBAO = "libao";
|
|
public static final String HOST_COMMUNITY = "community";
|
|
public static final String HOST_SUGGESTION = "suggestion";
|
|
public static final String HOST_ANSWER = "answer";
|
|
public static final String HOST_QUESTION = "question";
|
|
public static final String HOST_TOOLBOX = "toolbox";
|
|
public static final String HOST_FORUM_DETAIL = "forum_detail";
|
|
public static final String HOST_GAME_RATING_DETAIL = "game_rating_detail";
|
|
public static final String HOST_HELP_AND_FEEDBACK = "help_and_feedback";
|
|
public static final String KEY_DATA = "data";
|
|
public static final String KEY_MESSAGE = "message";
|
|
public static final String KEY_MESSAGE_ID = "message_id";
|
|
public static final String KEY_TYPE = "type";
|
|
public static final String KEY_LINK = "link";
|
|
public static final String KEY_NAME = "name";
|
|
public static final String KEY_POSITION = "position";
|
|
public static final String KEY_ENTRANCE = "entrance";
|
|
public static final String KEY_ENTRANCE_LINK = "entrance_link";
|
|
public static final String KEY_TARGET = "target";
|
|
public static final String ENTRANCE_BROWSER = "(浏览器)";
|
|
public static final String ENTRANCE_WELCOME = "(启动弹窗)";
|
|
public static final String ENTRANCE_UMENG = "(友盟推送)";
|
|
public static final String ENTRANCE_MIPUSH = "(小米推送)";
|
|
public static final String ENTRANCE_DOWNLOAD = "(下载跳转)";
|
|
public static final String ENTRANCE_RECOMMEND = "(落地页)";
|
|
public static final String ENTRANCE_BLOCK_RECOMMEND = "(推荐入口)";
|
|
public static final String ENTRANCE_AMWAY = "(安利墙)";
|
|
public static final String KEY_SUGGEST_HINT_TYPE = "suggestHintType";
|
|
public static final String KEY_PACKAGENAME = "packageName";
|
|
public static final String KEY_PLATFORM = "platform";
|
|
public static final String KEY_GAME_NAME = "game_name";
|
|
public static final String KEY_VERSION = "version";
|
|
public static final String KEY_CONTENT = "content";
|
|
public static final String KEY_PLUGIN = "plugin";
|
|
public static final String KEY_LOCATION = "location";
|
|
public static final String KEY_CURRENTITEM = "currentItem";
|
|
public static final String KEY_COMMENTID = "commentId";
|
|
public static final String KEY_COMMENT_ID = "comment_id";
|
|
public static final String KEY_SHOW_KEYBOARD_IF_NEEDED = "show_key_board_if_needed";
|
|
public static final String KEY_PATH = "path";
|
|
public static final String KEY_LOCAL_PATH = "local_path";
|
|
public static final String KEY_OUTER_INFO = "outerInfo";
|
|
public static final String KEY_OLDERUSER = "isOldUser";
|
|
public static final String KEY_SEARCHKEY = "searchKey";
|
|
public static final String KEY_HINT = "hint";
|
|
public static final String KEY_GAME = "game";
|
|
public static final String KEY_GAME_ICON_URL = "gameIconUrl";
|
|
public static final String KEY_SHARECONTENT = "shareContent";
|
|
public static final String KEY_SUGGESTTYPE = "suggestType";
|
|
public static final String KEY_PROLIST = "provinceList";
|
|
public static final String KEY_ORDER = "order";
|
|
public static final String KEY_TAGTYPE = "tagType";
|
|
public static final String KEY_ANSWER_ID = "answerId";
|
|
public static final String KEY_ANSWER_CONTENT = "answerContent";
|
|
public static final String KEY_QUESTIONS_ID = "questionsId";
|
|
public static final String KEY_QUESTIONS_TITLE = "questionsTitle";
|
|
public static final String KEY_ANSWER_OPEN_IN_NEW_PAGE = "openInNewPage";
|
|
public static final String KEY_QUESTIONS_PATCH = "questionsPatch";
|
|
public static final String KEY_INVITE_SEARCH_KEY = "inviteSearchKey";
|
|
public static final String KEY_MESSAGE_TYPE = "messageType";
|
|
public static final String KEY_QUESTIONS_SEARCH_KEY = "questionsSearchKey";
|
|
public static final String KEY_SHOW_COMMENT = "showComment";
|
|
public static final String KEY_SHOW_ANSWER_COMMENT = "showAnswerComment";
|
|
public static final String KEY_RECOMMENDS_CONTENTS = "isRecommendsContents";
|
|
public static final String KEY_VERSION_UPDATE = "versionUpdate";
|
|
public static final String KEY_CHECK_QUESTION_CONCERN = "check_question_concern";
|
|
public static final String KEY_DRAFT_ID = "draft_id";
|
|
public static final String KEY_KAIFU_LIST = "kaifuList";
|
|
public static final String KEY_CATEGORY_ID = "category_id";
|
|
public static final String KEY_CATEGORY_TITLE = "category_title";
|
|
public static final String KEY_CATEGORY_INIT_TITLE = "category_init_title";
|
|
public static final String KEY_BLOCK_DATA = "blockData";
|
|
public static final String KEY_ASK_TAG = "askTag";
|
|
public static final String KEY_SCROLL_TO_LIBAO = "libao";
|
|
public static final String KEY_ASK_COLUMN_TAG = "askColumnTag";
|
|
public static final String KEY_COMMUNITY_ID = "community_id";
|
|
public static final String KEY_COMMUNITY_NAME = "community_name";
|
|
public static final String KEY_COMMUNITY_DATA = "communityData";
|
|
public static final String KEY_TRACE_EVENT = "trace_event";
|
|
public static final String KEY_SUBJECT_DATA = "subjectData";
|
|
public static final String KEY_USER_ID = "user_id";
|
|
public static final String KEY_QUESTION_TAG = "question_tag";
|
|
public static final String KEY_COLUMN_ID = "column_id";
|
|
public static final String KEY_AUTO_DOWNLOAD = "auto_download";
|
|
public static final String KEY_HIDE_SUGGEST_HINT = "hide_suggest_hint";
|
|
public static final String KEY_COMMUNITY_ARTICLE_ID = "communityArticleId";
|
|
public static final String KEY_ARTICLE_COMMENT_ID = "articleCommentId";
|
|
public static final String KEY_SHOW_ARTICLE_COMMENT = "showArticleComment";
|
|
public static final String KEY_SCROLL_TO_COMMENT_AREA = "scroll_to_comment_area";
|
|
public static final String KEY_RATING_STAR_COUNT = "ratingStarCount";
|
|
public static final String KEY_QUESTION_MODERATOR_PATCH = "questionModeratorPatch";
|
|
public static final String KEY_SKIP_GAME_COMMENT = "skipGameComment";
|
|
public static final String KEY_OPEN_PLATFORM_WINDOW = "openPlatformWindow";
|
|
public static final String KEY_OPEN_KEYBOARD = "openKeyboard";
|
|
public static final String KEY_PATH_VIDEO = "pathVideo";
|
|
public static final String KEY_VIDEO_ID = "videoId";
|
|
public static final String KEY_DIRECT_COMMENT = "directComment";
|
|
public static final String KEY_SORT = "sort";
|
|
public static final String KEY_AMWAY = "amway";
|
|
public static final String KEY_SKIP_SUCCESS_PAGE = "skipSuccessPage";
|
|
public static final String KEY_COLLECTION_ID = "collectionId";
|
|
public static final String KEY_NAVIGATION_TITLE = "navigationTitle";
|
|
public static final String KEY_IMAGE_CROP_RATIO = "imageCropRatio";
|
|
public static final String KEY_OPEN_VIDEO_STREAMING = "openVideoStreaming";
|
|
public static final String KEY_REFERER = "referer";
|
|
public static final String KEY_UUID = "uuid";
|
|
public static final String KEY_IS_HOME_VIDEO = "isHomeVideo";
|
|
public static final String KEY_IS_HOME = "isHome";
|
|
public static final String KEY_WEB_SHARE = "webShare";
|
|
public static final String KEY_ACTIVITY_NAME = "activityName";//活动名称
|
|
public static final String KEY_PAGINATION_TYPE = "paginationType";//活动分页方式
|
|
public static final String KEY_REQUIRE_REDIRECT = "require_redirect"; // 标记需要再跳转
|
|
public static final String KEY_FIELD_ID = "field_id"; // 专区板块id
|
|
public static final String KEY_SECTION_NAME = "section_name"; // 专区专题名
|
|
public static final String KEY_COLUMNNAME = "columnName";
|
|
public static final String KEY_QA_ID = "qaId";
|
|
public static final String KEY_QA_CONTENT_ID = "qaContentId";
|
|
public static final String KEY_QA_CATEGORY_NAME = "qaCategoryName";
|
|
public static final String KEY_QA_TITLE = "qa_title";
|
|
public static final String KEY_QA_COLLECTION_ID = "qaCollectionId";
|
|
public static final String KEY_SHOW_EDIT_DRAFT = "showEditDraft";
|
|
public static final String KEY_ARTICLE_OPEN_IN_NEW_PAGE = "openArticleInNewPage";
|
|
public static final String KEY_ONLY_CREATE_DRAFT = "onlyCreateDraft";
|
|
public static final String KEY_KAIFU_SELECT_TIME = "kaifuSelectTime";
|
|
public static final String KEY_POSTER_PATH = "posterPath";
|
|
public static final String KEY_BLACK_THEME = "blackTheme";
|
|
public static final String KEY_FROM_LOGIN = "fromLogin";
|
|
public static final String KEY_CHANGE_PHONE = "changePhone";
|
|
public static final String KEY_CONFLICT_PHONE = "conflictPhone";
|
|
public static final String KEY_CONFLICT_USER = "conflictUser";
|
|
public static final String KEY_BBS_ID = "bbs_id";
|
|
|
|
public static void jumpActivity(Context context, Bundle bundle) {
|
|
bundle.putBoolean(KEY_REQUIRE_REDIRECT, true);
|
|
|
|
//TODO 把其他类似的跳转启动逻辑也处理掉
|
|
if (RunningUtils.isRunning(context)
|
|
&& MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) {
|
|
// 应用正在运行,前台或后台
|
|
String to = bundle.getString(KEY_TO);
|
|
Class<?> clazz = ClassUtils.forName(to);
|
|
if (clazz == null) clazz = MainActivity.class;
|
|
if (NormalFragment.class.isAssignableFrom(clazz)) { // 兼容NormalFragment
|
|
NormalActivity.startFragmentNewTask(context, (Class<? extends NormalFragment>) clazz, bundle);
|
|
} else {
|
|
Intent intent1 = new Intent(context, clazz);
|
|
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
intent1.putExtras(bundle);
|
|
context.startActivity(intent1);
|
|
}
|
|
} else {
|
|
// 应用未在运行
|
|
context.startActivity(SplashScreenActivity.getSplashScreenIntent(context, bundle));
|
|
}
|
|
}
|
|
|
|
|
|
public static void jumpActivity(Context context, Bundle nextToBundle, Bundle bundle, Callback callback) {
|
|
bundle.putBoolean(KEY_REQUIRE_REDIRECT, true);
|
|
|
|
//TODO 把其他类似的跳转启动逻辑也处理掉
|
|
if (RunningUtils.isRunning(context)
|
|
&& MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) {
|
|
// 应用正在运行,前台或后台
|
|
String to = bundle.getString(KEY_TO);
|
|
Class<?> clazz = ClassUtils.forName(to);
|
|
if (clazz == null) clazz = MainActivity.class;
|
|
if (NormalFragment.class.isAssignableFrom(clazz)) { // 兼容NormalFragment
|
|
NormalActivity.startFragmentNewTask(context, (Class<? extends NormalFragment>) clazz, bundle);
|
|
} else {
|
|
Intent intent1 = new Intent(context, clazz);
|
|
//TODO:添加FLAG_ACTIVITY_NEW_TASK会导致一跳转页面callback就被调用
|
|
//intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
intent1.putExtras(bundle);
|
|
|
|
AvoidOnResultManager.Companion.getInstance((AppCompatActivity) context)
|
|
.startForResult(intent1, callback);
|
|
}
|
|
} else {
|
|
// 应用未在运行
|
|
if (nextToBundle != null) {
|
|
bundle.putBundle(KEY_NEXT_TO, nextToBundle);
|
|
}
|
|
context.startActivity(SplashScreenActivity.getSplashScreenIntent(context, bundle));
|
|
}
|
|
}
|
|
|
|
public static void saveShortcut(String activityName, @Nullable Bundle bundle) {
|
|
if (BuildConfig.DEBUG) {
|
|
JSONObject json = new JSONObject();
|
|
|
|
if (activityName.contains("MainActivity")) {
|
|
SPUtils.setString(EntranceUtils.KEY_BUNDLE, "");
|
|
return;
|
|
}
|
|
|
|
if (bundle == null) bundle = new Bundle();
|
|
try {
|
|
Set<String> keys = bundle.keySet();
|
|
json.put(KEY_TO, activityName);
|
|
for (String key : keys) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
|
Object object = bundle.get(key);
|
|
if (object instanceof Parcelable) {
|
|
if (object.toString().toLowerCase().contains("gameentity")) {
|
|
Utils.toast(HaloApp.getInstance().getApplication(), "暂不支持带游戏实体的页面保存捷径");
|
|
return;
|
|
}
|
|
|
|
String parcelableName = key + ":parcelable";
|
|
String parcelableType = object.getClass().getName();
|
|
String objectJsonString = GsonUtils.toJson(object);
|
|
JSONObject jObject = new JSONObject(objectJsonString);
|
|
json.put(parcelableName, parcelableType);
|
|
json.put(key, jObject);
|
|
} else {
|
|
json.put(key, JSONObject.wrap(bundle.get(key)));
|
|
}
|
|
}
|
|
}
|
|
Utils.toast(HaloApp.getInstance().getApplication(), "保存捷径成功");
|
|
SPUtils.setString(EntranceUtils.KEY_BUNDLE, json.toString());
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
SPUtils.setString(EntranceUtils.KEY_BUNDLE, "");
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void jumpShortcut(Activity activity) {
|
|
if (BuildConfig.DEBUG) {
|
|
if (!hasShortcut()) return;
|
|
|
|
Bundle bundle = new Bundle();
|
|
try {
|
|
JSONObject jsonObject = new JSONObject(SPUtils.getString(EntranceUtils.KEY_BUNDLE));
|
|
Iterator iter = jsonObject.keys();
|
|
String parcelableName = "";
|
|
while (iter.hasNext()) {
|
|
String key = (String) iter.next();
|
|
String value = jsonObject.getString(key);
|
|
if (key.contains(":parcelable")) {
|
|
parcelableName = value;
|
|
} else {
|
|
if (!TextUtils.isEmpty(parcelableName)) {
|
|
Class<?> gClass = Class.forName(parcelableName);
|
|
bundle.putParcelable(key, ((Parcelable) GsonUtils.fromJson(value, gClass)));
|
|
} else {
|
|
bundle.putString(key, value);
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
jumpActivity(activity, bundle);
|
|
}
|
|
}
|
|
|
|
public static boolean hasShortcut() {
|
|
return !TextUtils.isEmpty(SPUtils.getString(EntranceUtils.KEY_BUNDLE));
|
|
}
|
|
|
|
}
|