From 9f0b6897f14a4aa77bd06fb64b8043e41b9c6c77 Mon Sep 17 00:00:00 2001 From: 18401019693 Date: Sat, 12 Nov 2022 16:05:04 +0800 Subject: [PATCH] =?UTF-8?q?Js=E8=B0=83=E7=94=A8=E5=8E=9F=E7=94=9F=E6=95=B4?= =?UTF-8?q?=E6=94=B9,=E4=B8=BB=E6=92=AD=E8=B8=A2=E4=BA=BA=E4=B8=8D?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=88=BF=E9=97=B4=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/JavascriptInterfaceEvent.java | 20 ++ .../utils/JavascriptInterfaceUtils.java | 56 +++- .../live/dialog/LiveHDDialogFragment.java | 47 ++-- .../live/views/PortraitLiveManager.java | 22 +- .../main/activity/MyWebViewActivity.java | 2 + .../main/activity/MyWebViewActivity2.java | 183 +++---------- .../yunbao/main/activity/RewardActivity.java | 248 +++++------------- .../main/activity/ZhuangBanActivity.java | 26 +- .../views/MainHomeCommunityViewHolder.java | 4 - 9 files changed, 232 insertions(+), 376 deletions(-) diff --git a/common/src/main/java/com/yunbao/common/event/JavascriptInterfaceEvent.java b/common/src/main/java/com/yunbao/common/event/JavascriptInterfaceEvent.java index c60cee8f3..474e127e4 100644 --- a/common/src/main/java/com/yunbao/common/event/JavascriptInterfaceEvent.java +++ b/common/src/main/java/com/yunbao/common/event/JavascriptInterfaceEvent.java @@ -21,6 +21,26 @@ public class JavascriptInterfaceEvent extends BaseModel { private String moneyUsd; private boolean isUpdataUser; private String data; + private String name; + private String image; + + public String getName() { + return name; + } + + public JavascriptInterfaceEvent setName(String name) { + this.name = name; + return this; + } + + public String getImage() { + return image; + } + + public JavascriptInterfaceEvent setImage(String image) { + this.image = image; + return this; + } public String getUserId() { return userId; diff --git a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java index c0414a708..659daee2b 100644 --- a/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java +++ b/common/src/main/java/com/yunbao/common/utils/JavascriptInterfaceUtils.java @@ -1,29 +1,33 @@ package com.yunbao.common.utils; import static com.yunbao.common.CommonAppConfig.isGetNewWrap; +import static com.yunbao.common.CommonAppContext.logger; +import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; import static com.yunbao.common.utils.RouteUtil.PATH_COIN; import android.app.Activity; import android.webkit.JavascriptInterface; import android.webkit.WebView; +import com.adjust.sdk.Adjust; +import com.adjust.sdk.AdjustEvent; import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.bean.IMLoginModel; -import com.yunbao.common.bean.JsWishBean; import com.yunbao.common.bean.ReportCommunityBean; import com.yunbao.common.bean.UserBean; import com.yunbao.common.bean.VideoBean; import com.yunbao.common.bean.VideoListBean; import com.yunbao.common.event.JavascriptInterfaceEvent; -import com.yunbao.common.event.MainHomeCommunityToChatEvent; +import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.manager.IMLoginManager; import org.greenrobot.eventbus.EventBus; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -205,8 +209,12 @@ public class JavascriptInterfaceUtils { @JavascriptInterface public void androidClickSayHiBack(String uid, String name, String img) { Bus.get().post(new JavascriptInterfaceEvent() - .setMethod("androidClickSayHiBack")); - EventBus.getDefault().post(new MainHomeCommunityToChatEvent().setTargetId(uid)); + .setMethod("androidClickSayHiBack") + .setUserId(uid) + .setUserId(uid) + .setImage(img) + .setName(name)); + } @JavascriptInterface @@ -271,6 +279,7 @@ public class JavascriptInterfaceUtils { @JavascriptInterface public void openWebView(String url) { + Bus.get().post(new JavascriptInterfaceEvent().setMethod("openWebView").setData(url)); Constants.isTitle = false; RouteUtil.forwardZhuangBanActivity(url); } @@ -320,6 +329,14 @@ public class JavascriptInterfaceUtils { } + //跳转修改头像 + @JavascriptInterface + public void openUpdataAvater(String s) { + Bus.get().post(new JavascriptInterfaceEvent() + .setMethod("openUpdataAvater")); + + } + //跳转修改签名 @JavascriptInterface public void openUpdataAutograph() { @@ -328,6 +345,13 @@ public class JavascriptInterfaceUtils { } + //跳转修改签名 + @JavascriptInterface + public void openUpdataAutograph(String s) { + Bus.get().post(new JavascriptInterfaceEvent() + .setMethod("openUpdataAutograph")); + } + @JavascriptInterface public void androidGoTopUp() { Bus.get().post(new JavascriptInterfaceEvent() @@ -376,6 +400,30 @@ public class JavascriptInterfaceUtils { Bus.get().post(new JavascriptInterfaceEvent() .setMethod("onTrickerySendGift") .setUserId(id)); + } + @JavascriptInterface + public void androidZBan(String svg) { + String[] arr = svg.split("/"); + String id = arr[arr.length - 1]; + String url1; + if (!svg.contains("http")) { + url1 = CommonAppConfig.HOST + svg; + } else { + url1 = svg; + } + GiftCacheUtil.getFile(Constants.GIF_CAR_PREFIX + id, url1, "0", new CommonCallback() { + @Override + public void callback(File bean) { + + } + }); + } + @JavascriptInterface + public void AndroidAdjustPrank() { + AdjustEvent adjustEvent1 = new AdjustEvent("v1nekv"); + Adjust.trackEvent(adjustEvent1); + mFirebaseAnalytics.logEvent("FS_prank_interaction", null); + logger.logEvent("FB_prank_interaction", null); } } diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java index f3f7b66d7..c446681e8 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveHDDialogFragment.java @@ -2,7 +2,6 @@ package com.yunbao.live.dialog; import static com.yunbao.common.CommonAppContext.logger; import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; -import static com.yunbao.common.utils.RouteUtil.PATH_COIN; import android.content.DialogInterface; import android.content.Intent; @@ -26,16 +25,20 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.LinearLayout; +import androidx.annotation.Nullable; + import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustEvent; -import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.bean.JsWishBean; +import com.yunbao.common.bean.LiveBean; import com.yunbao.common.dialog.AbsDialogFragment; +import com.yunbao.common.event.JavascriptInterfaceEvent; import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.L; import com.yunbao.common.utils.RouteUtil; @@ -45,12 +48,13 @@ import com.yunbao.live.activity.LiveActivity; import com.yunbao.live.activity.LiveAudienceActivity; import com.yunbao.live.activity.LiveRyAnchorActivity; import com.yunbao.live.activity.ZhuangBanActivity; -import com.yunbao.common.bean.LiveBean; import com.yunbao.live.event.LiveRoomChangeEvent; import com.yunbao.live.http.LiveHttpUtil; import com.yunbao.live.presenter.LiveRoomCheckLivePresenter; import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; public class LiveHDDialogFragment extends AbsDialogFragment { @@ -124,6 +128,17 @@ public class LiveHDDialogFragment extends AbsDialogFragment { window.setAttributes(params); } + @Override + public void onDetach() { + super.onDetach(); + Bus.getOff(this); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bus.getOn(this); + } @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -199,21 +214,8 @@ public class LiveHDDialogFragment extends AbsDialogFragment { //js调用原生 public class JsInteration { - @JavascriptInterface - public void androidGoTopUp() { - ARouter.getInstance().build(PATH_COIN).withInt("p", 0).withString("tag", "&first_page=1").navigation(); - dismiss(); - } - - @JavascriptInterface - public String androidMethod(String data) { - if (data != null && !data.isEmpty()) { - onTrickerySendGiftInto(new JsWishBean(data)); - } - return ""; - } @JavascriptInterface public void AndroidAdjustPrank() { @@ -383,4 +385,17 @@ public class LiveHDDialogFragment extends AbsDialogFragment { mWebView.destroy(); } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onJavascriptInterfaceEvent(JavascriptInterfaceEvent event) { + if (!TextUtils.isEmpty(event.getMethod())) { + if (TextUtils.equals(event.getMethod(), "androidGoTopUp")) { + dismiss(); + } else if (TextUtils.equals(event.getMethod(), "androidMethod")) { + if (event.getData() != null && !event.getData().isEmpty()) { + onTrickerySendGiftInto(new JsWishBean(event.getData())); + } + } + } + } + } diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 0a9e2bd2d..c46312132 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -185,6 +185,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe //是否成功调用进入房间接口 private boolean isEnterRoom = false; + private boolean kick = false; public PortraitLiveManager setQuitF(boolean quitF) { isQuitF = quitF; @@ -319,7 +320,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe CommonHttpUtil.cancel(LiveHttpConsts.GET_WISH_LIST); IMLoginManager.get(mContext).setisNewUserOne(false); //子线程执行退出操作 - exitLiveRoom(); + exitLiveRoom(false); if (mLiveAudienceViewHolder != null) { mLiveAudienceViewHolder.removeFromParent(); mLiveAudienceViewHolder.removeCallbacks(); @@ -371,13 +372,13 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } if (isQuit) { isQuitF = true; - if (PermissionUtils.checkPermission(mContext)) { + if (PermissionUtils.checkPermission(mContext) && !kick) { LiveFloatView.getInstance() .cacheLiveData(mLiveBean, mLiveType, mLiveSDK, mLiveTypeVal) .builderSystemFloat(mContext, mLiveBean.getPull()); mContext.finish(); } else { - if (IMLoginManager.get(mContext).isFloat()) { + if (IMLoginManager.get(mContext).isFloat() && !kick) { EventBus.getDefault() .post(new LiveFloatEvent() .setmLiveBean(mLiveBean) @@ -772,7 +773,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe @Override public void onKick(String touid) { if (!TextUtils.isEmpty(touid) && touid.equals(CommonAppConfig.getInstance().getUid())) {//被踢的是自己 - exitLiveRoom(); + kick = true; + exitLiveRoom(true); ToastUtil.show(WordUtil.getString(R.string.live_kicked_2)); } } @@ -1414,7 +1416,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } } else { - exitLiveRoom(); + exitLiveRoom(false); } } @@ -1422,7 +1424,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe /** * 退出直播间 */ - public void exitLiveRoom() { + public void exitLiveRoom(boolean isQuitF) { if (mLiveBean == null && !isEnterRoom) { return; } @@ -1434,6 +1436,9 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe LiveHttpUtil.qBackRoom(mLiveBean.getUid(), mLiveBean.getStream(), new HttpCallback() { @Override public void onSuccess(int code, String msg, String[] info) { + if (isQuitF) { + onRemove(true); + } } }); @@ -1471,9 +1476,6 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe } } -// public void openDrawer() { -// drawerLayout.openDrawer(GravityCompat.END); -// } public void onLinkMicTxAccEvent(LinkMicTxAccEvent e) { if (mLivePlayViewHolder != null && mLivePlayViewHolder instanceof LivePlayTxViewHolder) { @@ -1543,7 +1545,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe @Override public void onCancelClick() { - exitLiveRoom(); + exitLiveRoom(true); } }); } diff --git a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java index d201bdef0..3796e138b 100644 --- a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity.java @@ -42,6 +42,7 @@ import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.bean.LiveBean; import com.yunbao.common.bean.UserBean; import com.yunbao.common.event.JavascriptInterfaceEvent; +import com.yunbao.common.event.MainHomeCommunityToChatEvent; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.interfaces.ActivityResultCallback; import com.yunbao.common.interfaces.CommonCallback; @@ -561,6 +562,7 @@ public class MyWebViewActivity extends AbsActivity { } else if (TextUtils.equals(event.getMethod(), "androidClickSayHiBack")) { Constants.firstInto = 0; + EventBus.getDefault().post(new MainHomeCommunityToChatEvent().setTargetId(event.getUserId())); } else if (TextUtils.equals(event.getMethod(), "androidPlayVideo")) { VideoStorge.getInstance().put(Constants.VIDEO_COMMUNITY, event.getVideoBeanList()); VideoPlayActivity.forward(mContext, event.getPosition(), Constants.VIDEO_COMMUNITY, 1); diff --git a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity2.java b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity2.java index 583ed6fd7..441458fb6 100644 --- a/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity2.java +++ b/main/src/main/java/com/yunbao/main/activity/MyWebViewActivity2.java @@ -6,14 +6,10 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; -import android.os.Handler; -import android.os.Looper; import android.provider.MediaStore; -import androidx.annotation.RequiresApi; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; -import android.webkit.JavascriptInterface; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebSettings; @@ -24,40 +20,39 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; +import androidx.annotation.RequiresApi; + import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.R; import com.yunbao.common.activity.AbsActivity; -import com.yunbao.common.bean.UserBean; -import com.yunbao.common.bean.VideoListBean; +import com.yunbao.common.bean.LiveBean; +import com.yunbao.common.event.JavascriptInterfaceEvent; import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DpUtil; +import com.yunbao.common.utils.JavascriptInterfaceUtils; import com.yunbao.common.utils.L; import com.yunbao.common.utils.RouteUtil; import com.yunbao.common.utils.ToastUtil; import com.yunbao.common.utils.WordUtil; import com.yunbao.live.activity.LiveAudienceActivity; -import com.yunbao.live.activity.LiveReportActivity; import com.yunbao.live.activity.SystemMessageActivity; -import com.yunbao.common.bean.LiveBean; -import com.yunbao.common.bean.ReportCommunityBean; import com.yunbao.live.event.LiveRoomChangeEvent; import com.yunbao.live.http.LiveHttpUtil; import com.yunbao.live.presenter.LiveRoomCheckLivePresenter; import com.yunbao.live.views.LiveRoomViewHolder; import com.yunbao.main.dialog.EncourageDialog; import com.yunbao.video.activity.VideoPlayActivity; -import com.yunbao.common.bean.VideoBean; import com.yunbao.video.utils.VideoStorge; import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; /** * Created by Chen Haoxuan on 2022/4/19. @@ -83,10 +78,8 @@ public class MyWebViewActivity2 extends AbsActivity { @Override protected void main() { + Bus.getOn(this); String url = getIntent().getStringExtra(Constants.URL); -// if (!"".endsWith(Constants.myUrl)) { -// url = Constants.myUrl; -// } LinearLayout rootView = (LinearLayout) findViewById(R.id.rootView); mProgressBar = (ProgressBar) findViewById(R.id.progressbar); btnEdit = (ImageView) findViewById(R.id.btn_edit); @@ -179,7 +172,9 @@ public class MyWebViewActivity2 extends AbsActivity { } }); - mWebView.addJavascriptInterface(new JsInteration(), "androidObject"); + mWebView.addJavascriptInterface(new JavascriptInterfaceUtils(mContext, mWebView) + .setPageClose(true) + .setLiveZhuangBana(false), "androidObject"); mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口 mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); @@ -221,107 +216,6 @@ public class MyWebViewActivity2 extends AbsActivity { init(); } - //js调用原生 - public class JsInteration { - @JavascriptInterface - public void androidCommunityGift(String postsId) { - Constants.nowPostsId = postsId; - new Handler(Looper.getMainLooper()).post(new Runnable() { - public void run() { - EncourageDialog fragment = new EncourageDialog(); - fragment.show(((MyWebViewActivity2) mContext).getSupportFragmentManager(), "EncourageDialog"); - }}); - } - - @JavascriptInterface - public void reportCommunity(String info) { - ReportCommunityBean reportCommunityBean = JSON.parseObject(info, ReportCommunityBean.class); - LiveReportActivity.forward3(mContext, reportCommunityBean.getDynamic_id(), 1, reportCommunityBean.getCommunity_type(), reportCommunityBean.getComment_id()); - } - - @JavascriptInterface - public void onBack() { - finish(); - } - - @JavascriptInterface - public void modifyMydata() { - indexInto = 1; - RouteUtil.forwardEditProfileActivity(); - } - - @JavascriptInterface - public void reportUser(String touid) { - RouteUtil.forwardLiveReportActivity(touid); - } - - @JavascriptInterface - public void androidMethodLookToLive(String liveId) { - //看直播 - gotoLive(liveId); - } - - @JavascriptInterface - public void androidClickSayHiBack(String uid, String name, String img) { - Constants.firstInto = 0; - SystemMessageActivity.forward(mContext, "-2", uid, name, img); - } - - @JavascriptInterface - public void androidClickFansList(String uid) { - FansActivity.forward(mContext, uid); - } - - @JavascriptInterface - public void androidPlayVideo(String list) { - list.toString(); - if (!"undefined".equals(list)) { - JSONObject obj = JSON.parseObject(list); - int position = obj.getIntValue("video_index"); - String videoListString = obj.getString("video_list"); - List videoList = JSON.parseArray(videoListString, VideoListBean.class); - List videoBeanList = new ArrayList<>(); - for (VideoListBean videoListBean : videoList) { - JSONObject obj2 = JSON.parseObject(videoListBean.getContent()); - String msg = obj2.getString("msg"); - VideoBean videoBean = new VideoBean(); - videoBean.setHref(videoListBean.getVideo()); - videoBean.setCity(""); - videoBean.setCommentNum(videoListBean.getComment_num()); - videoBean.setAddtime(videoListBean.getCreate_time()); - videoBean.setDatetime(""); - videoBean.setDistance(""); - videoBean.setId(videoListBean.getId()); - videoBean.setLat(""); - videoBean.setLike(0); - videoBean.setTitle(msg); - if ("2".endsWith(videoListBean.getIs_attention()) || "0".endsWith(videoListBean.getIs_attention())) { - videoBean.setAttent(2); - } else if ("1".endsWith(videoListBean.getIs_attention())) { - videoBean.setAttent(1); - } else { - videoBean.setAttent(-1); - } - UserBean userBean = new UserBean(); - userBean.setAvatar(videoListBean.getUser_avatar()); - userBean.setUserNiceName(videoListBean.getUser_name()); - userBean.setId(videoListBean.getUser_id()); - videoBean.setUserBean(userBean); - - videoBean.setUid(videoListBean.getUser_id()); - videoBeanList.add(videoBean); - } - VideoStorge.getInstance().put(Constants.VIDEO_COMMUNITY, videoBeanList); - VideoPlayActivity.forward(mContext, position, Constants.VIDEO_COMMUNITY, 1); - } - } - - @JavascriptInterface - public void openWebView(String url) { - ZhuangBanActivity.forward(mContext, url, false); - } - - } private LiveRoomCheckLivePresenter mCheckLivePresenter; @@ -438,6 +332,7 @@ public class MyWebViewActivity2 extends AbsActivity { @Override protected void onDestroy() { + Bus.getOff(this); if (mWebView != null) { ViewGroup parent = (ViewGroup) mWebView.getParent(); if (parent != null) { @@ -500,35 +395,25 @@ public class MyWebViewActivity2 extends AbsActivity { } -// private void closeFinger() { -// if (Build.VERSION.SDK_INT >= 21) { -// mWebView.post(new Runnable() { -// @Override -// public void run() { -// String method = "Left()";//拼接参数,就可以把数据传递给js -// mWebView.evaluateJavascript(method, new ValueCallback() { -// @Override -// public void onReceiveValue(String value) { -// Log.i("Log", "Left()js返回" + value); -// } -// }); -// } -// }); -// } else { -// mWebView.post(new Runnable() { -// @Override -// public void run() { -// mWebView.setWebViewClient(new WebViewClient() { -// @Override -// public void onPageFinished(WebView view, String url) { -// super.onPageFinished(view, url); -// mWebView.loadUrl("javascript:Left()"); -// } -// }); -// -// } -// }); -// } -// } - + @Subscribe(threadMode = ThreadMode.MAIN) + public void onJavascriptInterfaceEvent(JavascriptInterfaceEvent event) { + if (!TextUtils.isEmpty(event.getMethod())) { + Constants.nowPostsId = event.getPostsId(); + EncourageDialog fragment = new EncourageDialog(); + fragment.show(((MyWebViewActivity2) mContext).getSupportFragmentManager(), "EncourageDialog"); + } else if (TextUtils.equals(event.getMethod(), "modifyMydata")) { + indexInto = event.getIndexInto(); + } else if (TextUtils.equals(event.getMethod(), "androidMethodLookToLive")) { + //看直播 + gotoLive(event.getLiveId()); + } else if (TextUtils.equals(event.getMethod(), "androidClickSayHiBack")) { + Constants.firstInto = 0; + SystemMessageActivity.forward(mContext, "-2", event.getUserId(), event.getName(), event.getImage()); + } else if (TextUtils.equals(event.getMethod(), "androidPlayVideo")) { + VideoStorge.getInstance().put(Constants.VIDEO_COMMUNITY, event.getVideoBeanList()); + VideoPlayActivity.forward(mContext, event.getPosition(), Constants.VIDEO_COMMUNITY, 1); + } else if (TextUtils.equals(event.getMethod(), "openWebView")) { + ZhuangBanActivity.forward(mContext, event.getData(), false); + } + } } diff --git a/main/src/main/java/com/yunbao/main/activity/RewardActivity.java b/main/src/main/java/com/yunbao/main/activity/RewardActivity.java index bce0b84e1..d10fac9f3 100644 --- a/main/src/main/java/com/yunbao/main/activity/RewardActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/RewardActivity.java @@ -11,7 +11,6 @@ import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.ViewGroup; -import android.webkit.JavascriptInterface; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebSettings; @@ -37,12 +36,13 @@ import com.yunbao.common.CommonAppConfig; import com.yunbao.common.Constants; import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.bean.UserBean; +import com.yunbao.common.event.JavascriptInterfaceEvent; import com.yunbao.common.http.HttpCallback; import com.yunbao.common.interfaces.ActivityResultCallback; import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.interfaces.ImageResultCallback; import com.yunbao.common.utils.DpUtil; -import com.yunbao.common.utils.GiftCacheUtil; +import com.yunbao.common.utils.JavascriptInterfaceUtils; import com.yunbao.common.utils.L; import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.RouteUtil; @@ -52,6 +52,9 @@ import com.yunbao.common.utils.WordUtil; import com.yunbao.main.R; import com.yunbao.main.http.MainHttpUtil; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -150,7 +153,9 @@ public class RewardActivity extends AbsActivity { }); mWebView.getSettings().setJavaScriptEnabled(true); // 是否开启JS支持 mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // 是否允许JS打开新窗口 - mWebView.addJavascriptInterface(new JsInteration(), "androidObject"); + mWebView.addJavascriptInterface(new JavascriptInterfaceUtils(mContext, mWebView) + .setPageClose(true) + .setLiveZhuangBana(false), "androidObject"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } @@ -159,180 +164,6 @@ public class RewardActivity extends AbsActivity { updataImg(); } - //js调用原生 - public class JsInteration { - - @JavascriptInterface - public void androidClickToNewH5PageView(String url) { - url = CommonAppConfig.HOST + url; - url += "?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" - + CommonAppConfig.getInstance().getToken(); - Log.i("tag", url); - Intent intent = new Intent(mContext, ZhuangBanActivity.class); - intent.putExtra("url", url); - intent.putExtra("isFull", false); - mContext.startActivity(intent); - - } - - /** - * 新跳转 - * - * @param url 跳转的url - * @param title 有标题的展示标题 - */ - @JavascriptInterface - public void androidClickToNewH5PageView(String url, String title) { - url = CommonAppConfig.HOST + url; - url += "?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" - + CommonAppConfig.getInstance().getToken(); - Log.i("tag", url); - Intent intent = new Intent(mContext, ZhuangBanActivity.class); - intent.putExtra("url", url); - intent.putExtra("isFull", false); - intent.putExtra("title", title); - mContext.startActivity(intent); - - } - @JavascriptInterface - public void androidZBan(String svg) { - String[] arr = svg.split("/"); - String id = arr[arr.length - 1]; - String url1; - if (!svg.contains("http")) { - url1 = CommonAppConfig.HOST + svg; - } else { - url1 = svg; - } - GiftCacheUtil.getFile(Constants.GIF_CAR_PREFIX + id, url1, "0", new CommonCallback() { - @Override - public void callback(File bean) { - - } - }); - - - } - - @JavascriptInterface - public void androidOpeningNoble(String svg) { - try { - new SVGAParser(mContext).parse(new URL(svg), new SVGAParser.ParseCompletion() { - @Override - public void onComplete(SVGAVideoEntity videoItem) { - svga.setVisibility(View.VISIBLE); - SVGADrawable drawable = new SVGADrawable(videoItem); - svga.setImageDrawable(drawable); - svga.setLoops(1); - SVGAViewUtils.playEndClear(svga); - } - - @Override - public void onError() { - } - }); - svga.setCallback(new SVGACallback() { - @Override - public void onPause() { - - } - - @Override - public void onFinished() { - svga.clear(); - svga.setVisibility(View.GONE); - } - - @Override - public void onRepeat() { - - } - - @Override - public void onStep(int i, double v) { - - } - }); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } - - @JavascriptInterface - public void androidGoBack() { -// Log.e("Zhu", "svg" +svg); - RewardActivity.this.finish(); - } - - @JavascriptInterface - public void androidGoToRe() { - //我们的 -// ARouter.getInstance().build(PATH_COIN).withInt("p",1).navigation(); - //谷歌的 - String url = CommonAppConfig.HOST + "/index.php?g=Appapi&m=Mall&a=googlepaygole&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken(); - } - - @JavascriptInterface - public void gotoHomePage(String indexStr) { - Log.e("tgasss", "indexStr3" + indexStr); - - if (!"".equals(indexStr) && indexStr != null) { - int index = -1; - if ("0".equals(indexStr)) { - index = 0; - } else if ("1".equals(indexStr)) { - index = 1; - } else if ("2".equals(indexStr)) { - index = 2; - } else if ("3".equals(indexStr)) { - index = 3; - } - if (index != -1) { - finish(); - Constants.isShowPage = index; - } - } - } - - //打开无头部 - @JavascriptInterface - public void openWebView(String url) { - Constants.isTitle = false; - RouteUtil.forwardZhuangBanActivity(url); - } - - //打开有头部 - @JavascriptInterface - public void openWebViewTitle(String url) { - Constants.isTitle = true; - RouteUtil.forwardZhuangBanActivity(url); - } - - //跳转修改昵称 - @JavascriptInterface - public void openUpdataName(String s) { - isUpdataUser = true; - Constants.myIntoIndex = 2; - Intent intent = new Intent(mContext, MyWebViewActivity2.class); - intent.putExtra(Constants.URL, CommonAppConfig.HOST + "/h5/table/Modify-information.html" + "?token=" + CommonAppConfig.getInstance().getToken() + "&uid=" + CommonAppConfig.getInstance().getUid()); - startActivity(intent); - } - - //跳转修改头像 - @JavascriptInterface - public void openUpdataAvater(String s) { - isUpdataUser = true; - RouteUtil.forwardEditProfileActivity(); - - } - - //跳转修改签名 - @JavascriptInterface - public void openUpdataAutograph(String s) { - isUpdataUser = true; - forwardSign(); - } - } private void updataImg() { mImageUtil = new ProcessImageUtil(this); @@ -522,12 +353,6 @@ public class RewardActivity extends AbsActivity { if (Constants.isShowPage != -1) { finish(); } -// new Handler().postDelayed(new Runnable() { -// @Override -// public void run() { -// mWebView.reload(); -// } -// }, 100); if (isUpdataUser) { MainHttpUtil.getBaseInfo(new CommonCallback() { @Override @@ -538,4 +363,61 @@ public class RewardActivity extends AbsActivity { } super.onResume(); } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onJavascriptInterfaceEvent(JavascriptInterfaceEvent event) { + if (!TextUtils.isEmpty(event.getMethod())) { + if (TextUtils.equals(event.getMethod(), "androidOpeningNoble")) { + try { + new SVGAParser(mContext).parse(new URL(event.getSvg()), new SVGAParser.ParseCompletion() { + @Override + public void onComplete(SVGAVideoEntity videoItem) { + svga.setVisibility(View.VISIBLE); + SVGADrawable drawable = new SVGADrawable(videoItem); + svga.setImageDrawable(drawable); + svga.setLoops(1); + SVGAViewUtils.playEndClear(svga); + } + + @Override + public void onError() { + } + }); + svga.setCallback(new SVGACallback() { + @Override + public void onPause() { + + } + + @Override + public void onFinished() { + svga.clear(); + svga.setVisibility(View.GONE); + } + + @Override + public void onRepeat() { + + } + + @Override + public void onStep(int i, double v) { + + } + }); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } else if (TextUtils.equals(event.getMethod(), "openUpdataName")) { + isUpdataUser = event.isUpdataUser(); + Constants.myIntoIndex = 2; + } else if (TextUtils.equals(event.getMethod(), "openUpdataAvater")) { + isUpdataUser = true; + RouteUtil.forwardEditProfileActivity(); + } else if (TextUtils.equals(event.getMethod(), "openUpdataAutograph")) { + isUpdataUser = true; + forwardSign(); + } + } + } } diff --git a/main/src/main/java/com/yunbao/main/activity/ZhuangBanActivity.java b/main/src/main/java/com/yunbao/main/activity/ZhuangBanActivity.java index 29e8e3a96..eb2a2d0ad 100644 --- a/main/src/main/java/com/yunbao/main/activity/ZhuangBanActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/ZhuangBanActivity.java @@ -1,5 +1,7 @@ package com.yunbao.main.activity; +import static com.yunbao.common.utils.RouteUtil.PATH_COIN; + import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -36,6 +38,7 @@ import com.yunbao.common.activity.AbsActivity; import com.yunbao.common.bean.IMLoginModel; import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.manager.IMLoginManager; +import com.yunbao.common.utils.Bus; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.GiftCacheUtil; import com.yunbao.common.utils.L; @@ -49,8 +52,6 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; -import static com.yunbao.common.utils.RouteUtil.PATH_COIN; - @Route(path = RouteUtil.PATH_ZHUANGBANACTIVITY) public class ZhuangBanActivity extends AbsActivity { @@ -71,6 +72,7 @@ public class ZhuangBanActivity extends AbsActivity { @Override protected void main() { + Bus.getOn(this); String url = getIntent().getStringExtra(Constants.URL); String titleString = getIntent().getStringExtra("title"); if (!"".equals(Constants.myPackageUrl)) { @@ -83,9 +85,9 @@ public class ZhuangBanActivity extends AbsActivity { RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) rootView.getLayoutParams(); params.topMargin = DpUtil.dp2px(34); rootView.setLayoutParams(params); - if (TextUtils.isEmpty(titleString)){ + if (TextUtils.isEmpty(titleString)) { lt_title.setVisibility(View.GONE); - }else { + } else { if (TextUtils.equals(titleString, "blank")) { lt_title.setVisibility(View.GONE); } else { @@ -121,9 +123,9 @@ public class ZhuangBanActivity extends AbsActivity { @Override public void onPageFinished(WebView view, String url) { - if (TextUtils.isEmpty(titleString)){ + if (TextUtils.isEmpty(titleString)) { setTitle(view.getTitle()); - }else { + } else { setTitle(titleString); } @@ -291,6 +293,7 @@ public class ZhuangBanActivity extends AbsActivity { Constants.isTitle = true; RouteUtil.forwardZhuangBanActivity(url); } + @JavascriptInterface public void androidClickToNewH5PageView(String url) { url = CommonAppConfig.HOST + url; @@ -303,6 +306,7 @@ public class ZhuangBanActivity extends AbsActivity { mContext.startActivity(intent); } + /** * 新跳转 * @@ -321,6 +325,7 @@ public class ZhuangBanActivity extends AbsActivity { mContext.startActivity(intent); } + /** * 设置超皇字体颜色 * @@ -331,9 +336,9 @@ public class ZhuangBanActivity extends AbsActivity { @JavascriptInterface public void androidSetColor(String startColor, String endColor, String contentColor) { IMLoginModel model = IMLoginManager.get(mContext).getUserInfo(); - model.setStartColor("#"+startColor) - .setEndColor("#"+endColor) - .setContentColor("#"+contentColor); + model.setStartColor("#" + startColor) + .setEndColor("#" + endColor) + .setContentColor("#" + contentColor); IMLoginManager.get(mContext).upDataUserInfo(model); } } @@ -428,7 +433,7 @@ public class ZhuangBanActivity extends AbsActivity { Intent intent = new Intent(context, ZhuangBanActivity.class); Log.i("tag1212", url); intent.putExtra(Constants.URL, url); - if (url.contains("Noble/index.html")){ + if (url.contains("Noble/index.html")) { intent.putExtra("title", ""); } context.startActivity(intent); @@ -440,6 +445,7 @@ public class ZhuangBanActivity extends AbsActivity { @Override protected void onDestroy() { + Bus.getOff(this); if (mWebView != null) { ViewGroup parent = (ViewGroup) mWebView.getParent(); if (parent != null) { diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java index 7223dfd32..c2eaf1187 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeCommunityViewHolder.java @@ -340,10 +340,6 @@ public class MainHomeCommunityViewHolder extends AbsMainHomeChildViewHolder impl } } }); - } else if (TextUtils.equals(event.getMethod(), "isCloseNavigation")) { - if (nowMainActivity != null) { - nowMainActivity.isClose(event.getIsClose()); - } } else if (TextUtils.equals(event.getMethod(), "androidPlayVideo")) { VideoStorge.getInstance().put(Constants.VIDEO_COMMUNITY, event.getVideoBeanList()); VideoPlayActivity.forward(mContext, event.getPosition(), Constants.VIDEO_COMMUNITY, 1);