| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- package com.android.chmo.ui.activity;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.net.Uri;
- import android.os.Build;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AlertDialog;
- import android.text.TextUtils;
- import android.view.KeyEvent;
- import android.view.View;
- import android.webkit.JavascriptInterface;
- import android.webkit.JsResult;
- import android.webkit.WebChromeClient;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- import com.android.chmo.R;
- import com.android.chmo.app.ChmoApplication;
- import com.android.chmo.base.BaseActivity;
- import com.android.chmo.http.HttpApi;
- import com.android.chmo.http.RequestCallback;
- import com.android.chmo.http.response.ModelListRes;
- import com.android.chmo.http.service.ModelService;
- import com.android.chmo.model.ModelInfo;
- import com.android.chmo.ui.activity.model.FansActivity;
- import com.android.chmo.ui.activity.model.ModelDetailActivity;
- import com.android.chmo.ui.dialog.SendGiftDialog;
- import com.android.chmo.ui.dialog.ShareDialog;
- import com.android.chmo.wxapi.WeChatManager;
- import com.google.gson.Gson;
- import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
- import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
- import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
- import com.tencent.mm.opensdk.openapi.IWXAPI;
- import butterknife.BindView;
- import butterknife.OnClick;
- public class WebViewActivity extends BaseActivity implements ShareDialog.OnShareListener {
- @BindView(R.id.webView)
- WebView webView;
- @BindView(R.id.progressbar)
- ProgressBar progressBar;
- @BindView(R.id.tv_title)
- TextView tvTitle;
- private String url;
- private String activitypk;
- private String modelpk;
- private ShareDialog shareDialog;
- private IWXAPI iwxapi;
- private String shareUrl;
- private String shareTitle;
- private String shareDesc;
- public static void start(@NonNull Context context, @NonNull String url, @NonNull String activitypk, @NonNull String modelpk) {
- Intent intent = new Intent(context, WebViewActivity.class);
- intent.putExtra("url", url);
- intent.putExtra("activitypk", activitypk);
- intent.putExtra("modelpk", modelpk);
- context.startActivity(intent);
- }
- @Override
- protected int getContentResId() {
- return R.layout.activity_web_view;
- }
- @Override
- protected int getStatusBarStyle() {
- return STATUS_BAR_STYLE_LIGHT_CONTENT;
- }
- @OnClick(R.id.btn_back)
- void back() {
- if (webView.canGoBack()) {
- webView.goBack();
- } else {
- finish();
- }
- }
- @Override
- public void initView() {
- url = getIntent().getStringExtra("url");
- modelpk = getIntent().getStringExtra("modelpk");
- activitypk = getIntent().getStringExtra("activitypk");
- webView.addJavascriptInterface(this, "chmo");//添加js监听 这样html就能调用客户端
- webView.setWebChromeClient(webChromeClient);
- webView.setWebViewClient(webViewClient);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- WebView.setWebContentsDebuggingEnabled(true);
- }
- WebSettings webSettings = webView.getSettings();
- webSettings.setUserAgentString(webSettings.getUserAgentString() + " chmo");
- webSettings.setDomStorageEnabled(true);
- webSettings.setJavaScriptEnabled(true);//允许使用js
- webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);//不使用缓存,只从网络获取数据.
- //支持屏幕缩放
- webSettings.setSupportZoom(false);
- webSettings.setDisplayZoomControls(false);
- if (!url.contains("?")) {
- url += "?";
- }
- if (!TextUtils.isEmpty(activitypk)) {
- url += "activitypk=" + activitypk + "&";
- }
- if (!TextUtils.isEmpty(modelpk)) {
- url += "modelpk=" + modelpk + "&";
- }
- if (ChmoApplication.isLogin()) {
- url += "memberpk=" + ChmoApplication.getApp().getLoginUser().getPk();
- }
- webView.loadUrl(url);
- shareDialog = new ShareDialog(this);
- shareDialog.setOnShareListener(this);
- WeChatManager weChatManager = WeChatManager.getInstance();
- weChatManager.init(this);
- iwxapi = weChatManager.getApi();
- }
- private WebViewClient webViewClient = new WebViewClient() {
- @Override
- public void onPageFinished(WebView view, String url) {//页面加载完成
- progressBar.setVisibility(View.GONE);
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {//页面开始加载
- progressBar.setVisibility(View.VISIBLE);
- }
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- if (url.startsWith("tel:")) {
- Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
- startActivity(intent);
- view.reload();
- return true;
- }
- return super.shouldOverrideUrlLoading(view, url);
- }
- };
- private WebChromeClient webChromeClient = new WebChromeClient() {
- @Override
- public boolean onJsAlert(WebView webView, String url, String message, JsResult result) {
- new AlertDialog.Builder(webView.getContext())
- .setMessage(message)
- .setPositiveButton("确定", (dialog, which) -> result.confirm())
- .setCancelable(false)
- .show();
- return true;
- }
- @Override
- public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
- new AlertDialog.Builder(webView.getContext())
- .setMessage(message)
- .setPositiveButton("确定", (dialog, which) -> result.confirm())
- .setNegativeButton("取消", (dialog, which) -> result.cancel())
- .setCancelable(false)
- .show();
- return true;
- }
- @Override
- public void onReceivedTitle(WebView view, String title) {
- super.onReceivedTitle(view, title);
- tvTitle.setText(title);
- }
- @Override
- public void onProgressChanged(WebView view, int newProgress) {
- progressBar.setProgress(newProgress);
- }
- };
- @JavascriptInterface
- public void modelDetail(String modelpk) {
- ModelService.getModelInfo(modelpk, new RequestCallback() {
- @Override
- public void onSuccess(String result) {
- ModelListRes res = new Gson().fromJson(result, ModelListRes.class);
- if (res.data != null && res.data.size() > 0) {
- ModelInfo model = res.data.get(0);
- Intent intent = new Intent(getContext(), ModelDetailActivity.class);
- intent.putExtra("model", model);
- intent.putExtra("modelPk", model.modelpk);
- startActivity(intent);
- }
- }
- @Override
- public void onFailure(String error) {
- }
- });
- }
- @OnClick(R.id.btn_share)
- @JavascriptInterface
- public void share() {
- runOnUiThread(() -> shareDialog.show());
- }
- @JavascriptInterface
- public void setShareInfo(String url, String title, String desc) {
- if (!TextUtils.isEmpty(url)) {
- if (!url.startsWith("http")) {
- url = HttpApi.BASE_URL + url;
- }
- shareUrl = url;
- }
- shareUrl = url;
- shareTitle = title;
- shareDesc = desc;
- }
- @JavascriptInterface
- public void sendGift(String modelpk, String activitypk) {
- runOnUiThread(() -> {
- if (!ChmoApplication.isLogin()) {
- ChmoApplication.showLoginDialog(getContext());
- return;
- }
- SendGiftDialog.present(getContext(), modelpk, activitypk);
- });
- }
- @JavascriptInterface
- public void sendVideo(String modelpk) {
- ModelService.getModelInfo(modelpk, new RequestCallback() {
- @Override
- public void onSuccess(String result) {
- ModelListRes res = new Gson().fromJson(result, ModelListRes.class);
- if (res.data != null && res.data.size() > 0) {
- ModelInfo model = res.data.get(0);
- Intent intent = new Intent(getContext(), ModelDetailActivity.class);
- intent.putExtra("model", model);
- intent.putExtra("modelPk", model.modelpk);
- intent.putExtra("sendVideo", true);
- startActivity(intent);
- }
- }
- @Override
- public void onFailure(String error) {
- }
- });
- }
- @JavascriptInterface
- public void fansList(String modelpk) {
- runOnUiThread(() -> {
- Intent intent = new Intent(this, FansActivity.class);
- intent.putExtra("modelPK", modelpk);
- openPage(intent);
- });
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {
- webView.goBack();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- webView.destroy();
- webView = null;
- }
- @Override
- public void onShareWechatSession() {
- WXWebpageObject webpageObject = new WXWebpageObject(TextUtils.isEmpty(shareUrl) ? webView.getUrl() : shareUrl);
- WXMediaMessage message = new WXMediaMessage();
- message.mediaObject = webpageObject;
- message.title = TextUtils.isEmpty(shareTitle) ? "千模通告" : shareTitle;
- message.description = TextUtils.isEmpty(shareDesc) ? tvTitle.getText().toString() : shareDesc;
- Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
- message.setThumbImage(bmp);
- SendMessageToWX.Req req = new SendMessageToWX.Req();
- req.scene = SendMessageToWX.Req.WXSceneSession;
- req.message = message;
- iwxapi.sendReq(req);
- }
- @Override
- public void onShareWechatTimeline() {
- WXWebpageObject webpageObject = new WXWebpageObject(TextUtils.isEmpty(shareUrl) ? webView.getUrl() : shareUrl);
- WXMediaMessage message = new WXMediaMessage();
- message.mediaObject = webpageObject;
- message.title = TextUtils.isEmpty(shareTitle) ? tvTitle.getText().toString() : shareTitle;
- message.description = TextUtils.isEmpty(shareDesc) ? tvTitle.getText().toString() : shareDesc;
- Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
- message.setThumbImage(bmp);
- SendMessageToWX.Req req = new SendMessageToWX.Req();
- req.scene = SendMessageToWX.Req.WXSceneTimeline;
- req.message = message;
- iwxapi.sendReq(req);
- }
- }
|