diff --git a/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt index 63bfe69bf2..2ff94c31aa 100644 --- a/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultWebViewUrlHandler.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.text.TextUtils +import com.gh.common.util.CheckLoginUtils import com.gh.common.util.DialogUtils import com.gh.common.util.DirectUtils import com.gh.common.util.EntranceUtils @@ -12,7 +13,9 @@ import com.gh.gamecenter.LibaoDetailActivity import com.gh.gamecenter.NewsDetailActivity import com.gh.gamecenter.WebActivity import com.gh.gamecenter.entity.CommunityEntity +import com.gh.gamecenter.entity.VideoLinkEntity import com.gh.gamecenter.subject.SubjectActivity +import com.halo.assistant.HaloApp import com.lightgame.utils.Utils object DefaultWebViewUrlHandler { @@ -107,6 +110,19 @@ object DefaultWebViewUrlHandler { entrance, "文章链接") } } + EntranceUtils.HOST_UPLOAD_VIDEO -> { + val titleParameter = uri.getQueryParameter("title") + val title = if (titleParameter.isNullOrEmpty()) "" else "#$titleParameter#" + val categoryId = uri.getQueryParameter("category_id") ?: "" + val link = uri.getQueryParameter("link") ?: "" + val linkEntity = VideoLinkEntity(title, categoryId, link) + if (!CheckLoginUtils.isLogin()) { + HaloApp.put(EntranceUtils.HOST_UPLOAD_VIDEO, linkEntity) + } + CheckLoginUtils.checkLogin(context, EntranceUtils.ENTRANCE_BROWSER) { + DirectUtils.directToVideoManager(context, linkEntity, EntranceUtils.ENTRANCE_BROWSER, "") + } + } else -> DialogUtils.showLowVersionDialog(context) } return true diff --git a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java index 09c29f594c..af904114e0 100644 --- a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java +++ b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java @@ -1,7 +1,7 @@ package com.gh.common.util; import android.content.Context; -import android.content.Intent; +import android.os.Bundle; import android.text.TextUtils; import com.gh.gamecenter.LoginActivity; @@ -19,8 +19,12 @@ public class CheckLoginUtils { if (listener != null) Utils.toast(context, "需要登录"); LogUtils.login("dialog", null, entrance); LogUtils.login("activity", null, entrance); - Intent intent = LoginActivity.getIntent(context, entrance); - context.startActivity(intent); + + // 有可能App未启动 + Bundle bundle = new Bundle(); + bundle.putString(EntranceUtils.KEY_ENTRANCE, entrance); + bundle.putString(EntranceUtils.KEY_TO, LoginActivity.class.getName()); + EntranceUtils.jumpActivity(context, bundle); } else { if (listener != null) { listener.onLogin(); diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 28499f9344..609dd8ca93 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -189,7 +189,7 @@ object DirectUtils { "wechat_bind" -> context.startActivity(WebActivity.getBindWechatIntent(context)) - "video","video_stream" -> directToVideoDetail(context, + "video", "video_stream" -> directToVideoDetail(context, videoId = linkEntity.link!!, fromLocation = VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.value, entrance = entrance, @@ -543,12 +543,12 @@ object DirectUtils { * 跳转至上传视频 */ @JvmStatic - fun directToVideoManager(context: Context, entrance: String? = null, path: String? = "") { + fun directToVideoManager(context: Context, linkEntity: VideoLinkEntity, entrance: String? = null, path: String? = "") { val bundle = Bundle() bundle.putString(KEY_PATH, path) + bundle.putParcelable(VideoLinkEntity::class.java.simpleName, linkEntity) bundle.putString(KEY_TO, VideoManagerActivity::class.java.name) bundle.putString(KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) - //context.startActivity(VideoManagerActivity.getIntent(context, entrance, path)) jumpActivity(context, bundle) } 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 e8a34706ea..f111e69233 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -139,6 +139,7 @@ public class EntranceUtils { 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 void jumpActivity(Context context, Bundle bundle) { diff --git a/app/src/main/java/com/gh/gamecenter/LoginActivity.java b/app/src/main/java/com/gh/gamecenter/LoginActivity.java index abf20ee3d9..658344635d 100644 --- a/app/src/main/java/com/gh/gamecenter/LoginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LoginActivity.java @@ -5,17 +5,22 @@ import android.content.Intent; import android.graphics.Typeface; import android.os.Bundle; +import androidx.annotation.NonNull; + import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.fragment.LoginFragment; -import androidx.annotation.NonNull; - /** * Created by khy on 14/08/17. */ public class LoginActivity extends NormalActivity { + @Override + protected Intent provideNormalIntent() { + return getTargetIntent(this, LoginActivity.class, LoginFragment.class); + } + @NonNull public static Intent getIntent(Context context, String entrance) { Bundle bundle = new Bundle(); diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index bf759011af..63b0b86180 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -12,6 +12,7 @@ import com.gh.common.util.EntranceUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.RunningUtils; import com.gh.gamecenter.entity.CommunityEntity; +import com.gh.gamecenter.entity.VideoLinkEntity; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.halo.assistant.HaloApp; @@ -163,12 +164,18 @@ public class SkipActivity extends BaseActivity { false, id, ENTRANCE_BROWSER, "浏览器", TextUtils.isEmpty(referer) ? "" : referer); break; case HOST_UPLOAD_VIDEO://跳转上传视频 - if (CheckLoginUtils.isLogin()) { - DirectUtils.directToVideoManager(this, ENTRANCE_BROWSER, "浏览器"); - } else { - HaloApp.put(HOST_UPLOAD_VIDEO, true); - CheckLoginUtils.checkLogin(this, ENTRANCE_BROWSER, null); + String titleParameter = uri.getQueryParameter("title"); + String title = TextUtils.isEmpty(titleParameter) ? "" : "#" + titleParameter + "#"; + String categoryId = uri.getQueryParameter("category_id"); + String link = uri.getQueryParameter("link"); + VideoLinkEntity linkEntity = new VideoLinkEntity(title, categoryId, link); + if (!CheckLoginUtils.isLogin()) { + HaloApp.put(HOST_UPLOAD_VIDEO, linkEntity); } + + CheckLoginUtils.checkLogin(this, EntranceUtils.ENTRANCE_BROWSER, () -> { + DirectUtils.directToVideoManager(this,linkEntity, EntranceUtils.ENTRANCE_BROWSER, ""); + }); break; case HOST_VIDEO_SINGLE: DirectUtils.directToVideoDetail(this, path, VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), @@ -226,6 +233,7 @@ public class SkipActivity extends BaseActivity { } } } + finish(); } } diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.java b/app/src/main/java/com/gh/gamecenter/WebActivity.java index 7ae06b4351..450db77a27 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.java @@ -29,6 +29,14 @@ public class WebActivity extends NormalActivity { return getTargetIntent(this, WebActivity.class, WebFragment.class); } + @NonNull + public static Intent getWebIntentByShare(Context context, String url, boolean showWebShare) { + Bundle bundle = new Bundle(); + bundle.putBoolean(EntranceUtils.KEY_WEB_SHARE, showWebShare); + bundle.putString(EntranceUtils.KEY_URL, url); + return getTargetIntent(context, WebActivity.class, WebFragment.class, bundle); + } + @NonNull public static Intent getCommunityRuleIntent(Context context) { Bundle bundle = new Bundle(); diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt new file mode 100644 index 0000000000..978f42a3de --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoLinkEntity.kt @@ -0,0 +1,9 @@ +package com.gh.gamecenter.entity + +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize + +@Parcelize +data class VideoLinkEntity(val title: String? = "", + val categoryId: String? = "", + val link: String? = "") : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java index ea49550dd8..a82593f17d 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/LoginFragment.java @@ -15,8 +15,15 @@ import android.view.View; import android.widget.EditText; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + import com.gh.base.fragment.WaitingDialogFragment; -import com.gh.common.util.DirectUtils; +import com.gh.common.util.EntranceUtils; import com.gh.common.util.LogUtils; import com.gh.common.util.LoginHelper; import com.gh.common.util.LoginUtils; @@ -26,12 +33,14 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.entity.LoginTokenEntity; import com.gh.gamecenter.entity.UserInfoEntity; +import com.gh.gamecenter.entity.VideoLinkEntity; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.user.ApiResponse; import com.gh.gamecenter.user.LoginTag; import com.gh.gamecenter.user.UserViewModel; +import com.gh.gamecenter.video.videomanager.VideoManagerActivity; import com.halo.assistant.HaloApp; import com.tencent.connect.common.Constants; @@ -42,16 +51,9 @@ import org.json.JSONObject; import java.util.HashMap; import java.util.Map; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProviders; import butterknife.BindView; import butterknife.OnClick; -import static com.gh.common.util.EntranceUtils.ENTRANCE_BROWSER; import static com.gh.common.util.EntranceUtils.HOST_UPLOAD_VIDEO; /** @@ -265,9 +267,13 @@ public class LoginFragment extends NormalFragment implements LoginUtils.onCaptch if (TextUtils.isEmpty(UserManager.getInstance().getToken())) { mUserViewModel.retryCheckLogin(); } - Object gotoUploadVideo = HaloApp.get(HOST_UPLOAD_VIDEO, true); - if (gotoUploadVideo != null) { - DirectUtils.directToVideoManager(requireContext(), ENTRANCE_BROWSER, "浏览器"); + + Object videoLinkEntity = HaloApp.get(HOST_UPLOAD_VIDEO, true); + if (videoLinkEntity instanceof VideoLinkEntity) { + startActivity(VideoManagerActivity.getIntent( + requireContext(), + (VideoLinkEntity) videoLinkEntity, + EntranceUtils.ENTRANCE_BROWSER, "")); } if (getActivity() != null) getActivity().finish(); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index 12a235d352..7ad293c272 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -27,11 +27,14 @@ import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.MtaHelper; import com.gh.download.DownloadManager; +import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.MessageActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SearchActivity; +import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.entity.GameUpdateEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.message.MessageUnreadViewModel; @@ -254,10 +257,16 @@ public class SearchToolbarFragment extends BaseFragment implements View.OnClickL MtaHelper.onEvent("首页_点击", "顶栏", "消息中心"); DataCollectionUtils.uploadClick(getActivity(), "消息图标", "主页"); - CheckLoginUtils.checkLogin(requireContext(), "(工具栏)", () -> { - Intent i = MessageActivity.getIntent(requireContext(), "(工具栏)"); - startActivityForResult(i, REQUEST_MESSAGE); - }); + if (BuildConfig.DEBUG) { + SettingsEntity.Advertisement videoAdvertisement = Config.getSettings().getVideoAdvertisement(); + Intent webIntentByShare = WebActivity.getWebIntentByShare(getContext(), videoAdvertisement.getLink(), true); + startActivity(webIntentByShare); + } else { + CheckLoginUtils.checkLogin(requireContext(), "(工具栏)", () -> { + Intent i = MessageActivity.getIntent(requireContext(), "(工具栏)"); + startActivityForResult(i, REQUEST_MESSAGE); + }); + } break; } } diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt index 78c071f12c..f3f47e68ba 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt @@ -57,6 +57,8 @@ class UploadVideoActivity : ToolBarActivity() { private var mProcessingDialog: WaitingDialogFragment? = null + private var mVideoLink: VideoLinkEntity? = null + private var mVideoFileEntity: VideoFileEntity? = null private var mUpdatedPosterPath = "" @@ -109,6 +111,7 @@ class UploadVideoActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + mVideoLink = intent.getParcelableExtra(VideoLinkEntity::class.java.simpleName) mEntranceLink = intent.getStringExtra(EntranceUtils.KEY_ENTRANCE_LINK) ?: "" mPath = intent.getStringExtra(EntranceUtils.KEY_PATH) ?: "其他" @@ -250,6 +253,7 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.gameTitle.setSelection(mBinding.gameTitle.text.toString().length) initUpload(videoDraft.localPath) } else { + if (mVideoLink != null) mBinding.gameTitle.setText(mVideoLink?.title) initUpload(intent.getStringExtra(EntranceUtils.KEY_PATH_VIDEO)) } } @@ -425,6 +429,8 @@ class UploadVideoActivity : ToolBarActivity() { if (videoPatch.categoryId == videoTagEntity.id) flexCell.isChecked = true } + if (mVideoLink?.categoryId == videoTagEntity.id) flexCell.isChecked = true + val params = FlexboxLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 28F.dip2px()) params.setMargins(0, 16F.dip2px(), 8F.dip2px(), 0) flexCell.layoutParams = params @@ -647,11 +653,15 @@ class UploadVideoActivity : ToolBarActivity() { * * @param link 只用于数据统计 */ - fun getIntent(context: Context, videoPath: String, link: String, entrance: String, path: String): Intent { + fun getIntent(context: Context, + videoPath: String, + linkEntity: VideoLinkEntity, + entrance: String, + path: String): Intent { val intent = Intent(context, UploadVideoActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_PATH, path) - intent.putExtra(EntranceUtils.KEY_ENTRANCE_LINK, link) + intent.putExtra(VideoLinkEntity::class.java.simpleName, linkEntity) intent.putExtra(EntranceUtils.KEY_PATH_VIDEO, videoPath) return intent } diff --git a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt index 6fd619672a..3c5149c958 100644 --- a/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/videomanager/VideoManagerActivity.kt @@ -11,6 +11,7 @@ import com.gh.base.BaseActivity import com.gh.base.BaseActivity_TabLayout import com.gh.common.util.* import com.gh.gamecenter.R +import com.gh.gamecenter.entity.VideoLinkEntity import com.gh.gamecenter.video.upload.view.UploadVideoActivity import com.zhihu.matisse.Matisse import com.zhihu.matisse.MimeType @@ -18,13 +19,19 @@ import com.zhihu.matisse.internal.utils.PathUtils class VideoManagerActivity : BaseActivity_TabLayout() { + private var mVideoLink: VideoLinkEntity? = null + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (REQUEST_CODE_SELECT_VIDEO == requestCode && data != null) { val uris = Matisse.obtainResult(data) if (uris.size > 0) { val videoPath = PathUtils.getPath(this, uris[0]) ?: "" - val intent = UploadVideoActivity.getIntent(this, videoPath, mEntrance, "视频投稿") + val intent = if (mVideoLink != null) { + UploadVideoActivity.getIntent(this, videoPath, mVideoLink!!, mEntrance, "视频投稿") + } else { + UploadVideoActivity.getIntent(this, videoPath, mEntrance, "视频投稿") + } startActivityForResult(intent, REQUEST_CODE_VIDEO) } } @@ -43,12 +50,18 @@ class VideoManagerActivity : BaseActivity_TabLayout() { setNavigationTitle("视频投稿") setToolbarMenu(R.menu.menu_text) + mVideoLink = intent.getParcelableExtra(VideoLinkEntity::class.java.simpleName) + val menuItem = getMenuItem(R.id.menu_text) val container = menuItem.actionView.findViewById(R.id.menu_text) val text = container.findViewById(R.id.layout_menu_text) text.text = "上传视频" mTabIndicatorView.layoutParams?.height = 3F.dip2px() + + if (mVideoLink != null) { + onMenuItemClick(menuItem) + } } override fun onMenuItemClick(item: MenuItem): Boolean { @@ -97,5 +110,21 @@ class VideoManagerActivity : BaseActivity_TabLayout() { intent.putExtra(EntranceUtils.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) return intent } + + /** + * WEB端入口 + * + * @param link 只用于数据统计 + */ + @JvmStatic + fun getIntent(context: Context, + linkEntity: VideoLinkEntity, + entrance: String?, + path: String?): Intent { + val intent = Intent(context, VideoManagerActivity::class.java) + intent.putExtra(VideoLinkEntity::class.java.simpleName, linkEntity) + intent.putExtra(EntranceUtils.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + return intent + } } } \ No newline at end of file diff --git a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java index 424e2773ec..6b5349ab34 100644 --- a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java @@ -90,6 +90,7 @@ public class WebFragment extends NormalFragment { private int commentNum; + private boolean mShowWebShare; private boolean mAutoCompletionTitle; private boolean mIsTools; private boolean mIsBindWechat; @@ -126,7 +127,7 @@ public class WebFragment extends NormalFragment { mMenuCollect = getItemMenu(R.id.menu_collect); if (mMenuShare == null || mMenuCollect == null) return; - mMenuShare.setVisible(mIsTools); + mMenuShare.setVisible(mIsTools || mShowWebShare); mMenuCollect.setVisible(mIsTools); if (mIsTools) { @@ -144,11 +145,22 @@ public class WebFragment extends NormalFragment { public void onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()) { case R.id.menu_share: - if (mMenuShare != null && mToolBoxEntity != null) { - if (getActivity() instanceof BaseActivity) { - ((BaseActivity) getActivity()).showShare(mToolBoxEntity.getUrl(), mToolBoxEntity - .getIcon(), mToolBoxEntity.getName(), mToolBoxEntity.getDes(), ShareUtils.ShareType.tools); + if (mMenuShare != null && getActivity() instanceof BaseActivity) { + BaseActivity curActivity = (BaseActivity) getActivity(); + if (mToolBoxEntity != null) { + curActivity.showShare(mToolBoxEntity.getUrl(), + mToolBoxEntity.getIcon(), + mToolBoxEntity.getName(), + mToolBoxEntity.getDes(), + ShareUtils.ShareType.tools); + } else { + curActivity.showShare(getArguments().getString(EntranceUtils.KEY_URL), + getString(R.string.gh_icon_url), + mNavigationTitle, + mNavigationTitle, + ShareUtils.ShareType.news); } + } break; case R.id.menu_collect: @@ -208,6 +220,7 @@ public class WebFragment extends NormalFragment { String webUrl = args.getString(EntranceUtils.KEY_URL); + mShowWebShare = args.getBoolean(EntranceUtils.KEY_WEB_SHARE, false); mIsBindWechat = args.getBoolean(KEY_IS_BIND_WECHAT, false); mIsTools = args.getBoolean(KEY_ISTOOLS, false); mAutoCompletionTitle = args.getBoolean(KEY_COMPLETION_TITLE, true);