diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 7c8ade7879..7439491812 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -38,6 +38,7 @@ public class EntranceUtils { 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_DOWNLOAD = "download"; public static final String HOST_UPDATE = "update"; public static final String HOST_LIBAO = "libao"; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index a2e9659f29..9e0f52c329 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -25,9 +25,6 @@ import android.view.View; import android.view.Window; import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; - import com.gh.base.AppUncaughtHandler; import com.gh.base.BaseActivity; import com.gh.base.fragment.BaseFragment_ViewPager; @@ -48,12 +45,12 @@ import com.gh.common.util.DeviceTokenUtils; import com.gh.common.util.DeviceUtils; import com.gh.common.util.DialogUtils; import com.gh.common.util.DirectUtils; +import com.gh.common.util.DownloadNotificationHelper; import com.gh.common.util.EntranceUtils; import com.gh.common.util.GsonUtils; import com.gh.common.util.LogUtils; import com.gh.common.util.LunchType; import com.gh.common.util.MtaHelper; -import com.gh.common.util.DownloadNotificationHelper; import com.gh.common.util.NotificationHelper; import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; @@ -130,13 +127,21 @@ import java.util.TimerTask; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import androidx.annotation.NonNull; +import androidx.lifecycle.ViewModelProviders; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.ResponseBody; +import static com.gh.common.util.EntranceUtils.ENTRANCE_BROWSER; +import static com.gh.common.util.EntranceUtils.HOST_QQ; +import static com.gh.common.util.EntranceUtils.HOST_QQ_GROUP; +import static com.gh.common.util.EntranceUtils.HOST_WEB; +import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_TO; +import static com.gh.common.util.EntranceUtils.KEY_TYPE; import static com.gh.gamecenter.fragment.MainWrapperFragment.INDEX_PERSONAL; import static com.gh.gamecenter.personal.PersonalFragment.LOGIN_TAG; import static com.gh.gamecenter.personal.PersonalFragment.LOGOUT_TAG; @@ -459,6 +464,24 @@ public class MainActivity extends BaseActivity { skipIntent.putExtras(bundle); startActivity(skipIntent); } + } else { + // 使用光环进行二次跳转的页面会经过这里 + switch (to) { + case HOST_QQ: + DirectUtils.directToQqConversation(this, bundle.getString(KEY_DATA)); + break; + case HOST_QQ_GROUP: + DirectUtils.directToQqGroup(this, bundle.getString(KEY_DATA)); + break; + case HOST_WEB: + String url = bundle.getString(KEY_DATA) == null ? "" : bundle.getString(KEY_DATA); + if ("internal".equals(bundle.getString(KEY_TYPE))) { + DirectUtils.directToWebView(this, url, ENTRANCE_BROWSER); + } else { + DirectUtils.directToExternalBrowser(this, url); + } + break; + } } } } diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 97b80358df..7670b26b79 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -25,6 +25,9 @@ import static com.gh.common.util.EntranceUtils.HOST_COLUMN; import static com.gh.common.util.EntranceUtils.HOST_COMMUNITY; import static com.gh.common.util.EntranceUtils.HOST_DOWNLOAD; import static com.gh.common.util.EntranceUtils.HOST_GAME; +import static com.gh.common.util.EntranceUtils.HOST_LIBAO; +import static com.gh.common.util.EntranceUtils.HOST_QQ; +import static com.gh.common.util.EntranceUtils.HOST_QQ_GROUP; import static com.gh.common.util.EntranceUtils.HOST_QUESTION; import static com.gh.common.util.EntranceUtils.HOST_SUGGESTION; import static com.gh.common.util.EntranceUtils.HOST_TOOLBOX; @@ -35,13 +38,18 @@ import static com.gh.common.util.EntranceUtils.HOST_VIDEO_MORE; import static com.gh.common.util.EntranceUtils.HOST_VIDEO_SINGLE; import static com.gh.common.util.EntranceUtils.HOST_VIDEO_STREAMING_DESC; import static com.gh.common.util.EntranceUtils.HOST_VIDEO_STREAMING_HOME; +import static com.gh.common.util.EntranceUtils.HOST_WEB; +import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_GAME_NAME; import static com.gh.common.util.EntranceUtils.KEY_NAME; import static com.gh.common.util.EntranceUtils.KEY_PACKAGENAME; import static com.gh.common.util.EntranceUtils.KEY_PLATFORM; +import static com.gh.common.util.EntranceUtils.KEY_TO; +import static com.gh.common.util.EntranceUtils.KEY_TYPE; import static com.gh.common.util.EntranceUtils.KEY_VERSION; /** + * TODO 将此页面与 DefaultWebViewUrlHandler 的跳转格式写成文档 * Created by LGT on 2016/11/16. * 链接跳转用 */ @@ -58,28 +66,32 @@ public class SkipActivity extends BaseActivity { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); + Bundle bundle; if (uri != null) { if (CommonDebug.IS_DEBUG) { Utils.log("SkipActivity:: Uri=>" + uri.toString()); } String host = uri.getHost(); - String id = uri.getPath(); + String path = uri.getPath(); + + String to = uri.getQueryParameter("to"); + String type = uri.getQueryParameter("type"); String name = uri.getQueryParameter("name"); String referer = uri.getQueryParameter("referer"); - if (!TextUtils.isEmpty(id)) { - id = id.substring(1); + if (!TextUtils.isEmpty(path)) { + path = path.substring(1); } if (host != null) { switch (host) { case HOST_ARTICLE: - DirectUtils.directToArticle(this, id, ENTRANCE_BROWSER); + DirectUtils.directToArticle(this, path, ENTRANCE_BROWSER); break; case HOST_GAME: - DirectUtils.directToGameDetail(this, id, ENTRANCE_BROWSER, false); + DirectUtils.directToGameDetail(this, path, ENTRANCE_BROWSER, false); break; case HOST_COLUMN: - DirectUtils.directToSubject(this, id, uri.getQueryParameter(KEY_NAME), ENTRANCE_BROWSER); + DirectUtils.directToSubject(this, path, uri.getQueryParameter(KEY_NAME), ENTRANCE_BROWSER); break; case HOST_SUGGESTION: String platform = uri.getQueryParameter(KEY_PLATFORM); @@ -91,13 +103,13 @@ public class SkipActivity extends BaseActivity { DirectUtils.directToFeedback(this, content, ENTRANCE_BROWSER); break; case HOST_DOWNLOAD: - DirectUtils.directToDownloadManagerAndStartUpdate(this, id, uri.getQueryParameter(KEY_PACKAGENAME), ENTRANCE_BROWSER); + DirectUtils.directToDownloadManagerAndStartUpdate(this, path, uri.getQueryParameter(KEY_PACKAGENAME), ENTRANCE_BROWSER); break; case HOST_ANSWER: - DirectUtils.directToAnswerDetail(this, id, ENTRANCE_BROWSER, "浏览器"); + DirectUtils.directToAnswerDetail(this, path, ENTRANCE_BROWSER, "浏览器"); break; case HOST_QUESTION: - DirectUtils.directToQuestionDetail(this, id, ENTRANCE_BROWSER, "浏览器"); + DirectUtils.directToQuestionDetail(this, path, ENTRANCE_BROWSER, "浏览器"); break; case HOST_TOOLBOX: DirectUtils.directToToolbox(this, uri.getQueryParameter("gameId"), uri.getQueryParameter("toolboxUrl"), ENTRANCE_BROWSER); @@ -105,7 +117,7 @@ public class SkipActivity extends BaseActivity { case HOST_COMMUNITY: case HOST_VIDEO_STREAMING_HOME: Intent intent; - UserManager.getInstance().setCommunityData(new CommunityEntity(id, name)); + UserManager.getInstance().setCommunityData(new CommunityEntity(path, name)); // 把切换放到 MainActivity 处理 if (RunningUtils.isRunning(this) && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) { @@ -113,7 +125,7 @@ public class SkipActivity extends BaseActivity { intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(MainActivity.SWITCH_TO_COMMUNITY, true); } else { - Bundle bundle = new Bundle(); + bundle = new Bundle(); bundle.putBoolean(MainActivity.SWITCH_TO_COMMUNITY, true); intent = SplashScreenActivity.getSplashScreenIntent(this, bundle); } @@ -126,9 +138,8 @@ public class SkipActivity extends BaseActivity { // 社区文章格式二 case "communities": String communityId = ""; - String type = ""; String typeId = ""; - String[] split = id.split("/"); + String[] split = path.split("/"); for (String text : split) { if (TextUtils.isEmpty(communityId)) { communityId = text; @@ -148,7 +159,7 @@ public class SkipActivity extends BaseActivity { } break; case HOST_VIDEO: - DirectUtils.directToVideoDetail(this, id, VideoDetailContainerViewModel.Location.HOTTEST_GAME_VIDEO.getValue(), + DirectUtils.directToVideoDetail(this, path, VideoDetailContainerViewModel.Location.HOTTEST_GAME_VIDEO.getValue(), false, ENTRANCE_BROWSER, "浏览器", TextUtils.isEmpty(referer) ? "" : referer); break; case HOST_UPLOAD_VIDEO://跳转上传视频 @@ -167,13 +178,35 @@ public class SkipActivity extends BaseActivity { // DirectUtils.directToCommunity(this); // break; case HOST_VIDEO_STREAMING_DESC: - DirectUtils.directToGameDetailVideoStreaming(this, id, ENTRANCE_BROWSER); + DirectUtils.directToGameDetailVideoStreaming(this, path, ENTRANCE_BROWSER); break; case HOST_VIDEO_COLLECTION: - DirectUtils.directToGameVideo(this, id, ENTRANCE_BROWSER, "浏览器"); + DirectUtils.directToGameVideo(this, path, ENTRANCE_BROWSER, "浏览器"); + break; + case HOST_QQ: + bundle = new Bundle(); + bundle.putString(KEY_TO, HOST_QQ); + bundle.putString(KEY_DATA, path); + EntranceUtils.jumpActivity(this, bundle); + break; + case HOST_QQ_GROUP: + bundle = new Bundle(); + bundle.putString(KEY_TO, HOST_QQ_GROUP); + bundle.putString(KEY_DATA, path); + EntranceUtils.jumpActivity(this, bundle); + break; + case HOST_WEB: + bundle = new Bundle(); + bundle.putString(KEY_TO, HOST_WEB); + bundle.putString(KEY_DATA, to); + bundle.putString(KEY_TYPE, type); + EntranceUtils.jumpActivity(this, bundle); + break; + case HOST_LIBAO: + DirectUtils.directToGiftDetail(this, path, ENTRANCE_BROWSER); break; default: - EntranceUtils.jumpActivity(this, new Bundle()); // 跳转致首页 + EntranceUtils.jumpActivity(this, new Bundle()); // 跳转至首页 return; } }