123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- package com.edufound.reader.presenter;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.Color;
- import android.os.Build;
- import android.text.TextUtils;
- import android.view.View;
- import android.view.ViewGroup;
- import android.webkit.JsResult;
- import android.webkit.WebChromeClient;
- import android.webkit.WebResourceRequest;
- import android.webkit.WebResourceResponse;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.FrameLayout;
- import com.edufound.reader.base.BasePresenter;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.PayResultBean;
- import com.edufound.reader.contract.WebContract;
- import com.edufound.reader.jsinterfaces.WebActivityJsInterfaces;
- import com.edufound.reader.model.PayModel;
- import com.edufound.reader.receiver.ShowPageLoadingReceiver;
- import com.edufound.reader.util.tmailsdk.TMailSDKUtil;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.DeviceUtil;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- public class WebPresenter extends BasePresenter<WebContract.View> implements WebContract.Presenter {
- PayModel mPayModel;
- WebActivityJsInterfaces mJsInterfaces;
- String activityId;
- public WebPresenter() {
- mPayModel = new PayModel();
- }
- @Override
- public void attachView(WebContract.View view) {
- super.attachView(view);
- mJsInterfaces = new WebActivityJsInterfaces(mView);
- }
- @Override
- public WebView initWebView(Intent intent) {
- // WebView webview = new WebView(Consts.getmApplicAtion());
- WebView webview = new WebView(mView.getActivity());
- webview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
- if (Build.VERSION.SDK_INT >= 19) {
- webview.getSettings().setLoadsImagesAutomatically(true);
- } else {
- webview.getSettings().setLoadsImagesAutomatically(false);
- }
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
- }
- webview.requestFocus(View.FOCUS_DOWN);
- webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
- }
- webview.getSettings().setBlockNetworkImage(false);
- // webview.getSettings().set
- webview.setBackgroundColor(Color.TRANSPARENT);
- // webview.setBackgroundResource();
- webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
- webview.getSettings().setLoadWithOverviewMode(true);
- webview.getSettings().setTextZoom(100);
- webview.getSettings().setUseWideViewPort(true);
- webview.getSettings().setJavaScriptEnabled(true);
- webview.getSettings().setDomStorageEnabled(false);
- webview.getSettings().setSupportZoom(true);
- webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
- webview.getSettings().setLoadWithOverviewMode(true);
- webview.getSettings().setUseWideViewPort(true);
- webview.setWebChromeClient(new WebChromeClient() {
- @Override
- public Bitmap getDefaultVideoPoster() {
- return null;
- }
- @Override
- public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
- return super.onJsAlert(view, url, message, result);
- }
- @Override
- public void onShowCustomView(View view, CustomViewCallback callback) {
- super.onShowCustomView(view, callback);
- }
- @Override
- public void onProgressChanged(WebView view, int newProgress) {
- if (newProgress >= 100) {
- }
- super.onProgressChanged(view, newProgress);
- }
- });
- webview.setWebViewClient(new WebViewClient() {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- // webview.removeAllViews();
- view.loadUrl(url);
- return true;
- }
- @Override
- public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description, failingUrl);
- view.loadUrl("");
- }
- @Override
- public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
- super.onReceivedHttpError(view, request, errorResponse);
- // int statusCode = 0;
- // if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
- // statusCode = errorResponse.getStatusCode();
- // }
- // System.out.println("onReceivedHttpError code = " + statusCode);
- // if (404 == statusCode) {
- // view.loadUrl("about:blank");// 避免出现默认的错误界面
- // showDisConnNeWorkWindow();
- // }
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- if (!webview.getSettings().getLoadsImagesAutomatically()) {
- webview.getSettings().setLoadsImagesAutomatically(true);
- }
- if (mView != null) {
- mView.hideLoading();
- }
- super.onPageFinished(view, url);
- }
- });
- webview.addJavascriptInterface(mJsInterfaces, "efunboxJS");
- //加载地址
- String url = intent.getStringExtra("loadUrl").trim();
- Gson gson = new Gson();
- StringBuffer buffer = new StringBuffer();
- if (!TextUtils.isEmpty(intent.getStringExtra("paramsJson"))) {
- WebParams params = gson.fromJson(intent.getStringExtra("paramsJson"), WebParams.class);
- if (!TextUtils.isEmpty(params.channelCode)) {
- if (url.contains("?")) {
- buffer.append("&channelCode=" + params.channelCode);
- } else {
- buffer.append("?channelCode=" + params.channelCode);
- }
- } else {
- buffer.append("&a=a");
- }
- if (!TextUtils.isEmpty(params.uid)) {
- buffer.append("&uid=" + params.uid);
- }
- if (!TextUtils.isEmpty(params.versionCode)) {
- buffer.append("&versionCode=" + params.versionCode);
- }
- if (!TextUtils.isEmpty(params.activityId)) {
- buffer.append("&activityId=" + params.activityId);
- activityId = params.activityId;
- }
- buffer.append("&width=" + DeviceUtil.getWidth(mView.getActivity()));
- buffer.append("&height=" + DeviceUtil.getHeight(mView.getActivity()));
- }
- url += buffer.toString();
- webview.loadUrl(url);
- Intent hideLoading = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_HIDE);
- Consts.getmApplicAtion().getApplicationContext().sendBroadcast(hideLoading);
- return webview;
- }
- @Override
- public WebActivityJsInterfaces getJSInterfaces() {
- return mJsInterfaces;
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == TMailSDKUtil.TMAIL_PAY_RESULT_CODE && resultCode == Activity.RESULT_OK) {
- if (data != null) {
- boolean isPaySuccess = data.getBooleanExtra("isPaySuccess", false);
- String paySuccessDataJson = data.getStringExtra("paySuccessData");
- int payErrorCode = data.getIntExtra("payErrorCode", -1);
- String payErrorMsg = data.getStringExtra("payErrorMsg");
- Logger.e("qrcode, isPaySuccess=" + isPaySuccess +
- ";paySuccessDataJson=" + paySuccessDataJson +
- ";payErrorCode=" + payErrorCode +
- ";payErrorMsg=" + payErrorMsg);
- mView.loadJSMethodPost("TMailPayCallBack('" + isPaySuccess + "','" + paySuccessDataJson + "')");
- }
- }
- }
- @Override
- public void isPaySuccess(String orderId) {
- if (TextUtils.isEmpty(orderId)) {
- Logger.e("orderId是空的");
- return;
- }
- mPayModel.isPay(mView.getActivity(), orderId, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
- }.getType());
- Logger.e("bean.get:" + info.getRetDetail());
- Logger.e("status:" + bean.getData().getPayStatus());
- if (bean.getData().getPayStatus().equals("SUCCESS")) {
- mView.loadJSMethodPost("TMailPayCallBack('" + true + "','{\"status\":\"" + bean.getData().getPayStatus() + "\"}')");
- } else {
- mView.loadJSMethodPost("TMailPayCallBack('" + false + "','{\"status\":\"" + bean.getData().getPayStatus() + "\"}')");
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- }
- });
- }
- @Override
- public String getActivityId() {
- return activityId;
- }
- class WebParams {
- private String channelCode;
- private String uid;
- private String versionCode;
- private String activityId;
- }
- }
|