android.webkit.WebView#post ( )源码实例Demo

下面列出了android.webkit.WebView#post ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: quickhybrid-android   文件: UIApi.java
/**
 * 弹出日期选择对话框
 * <p>
 * 参数:
 * title: 标题
 * datetime: 指定日期 yyyy-MM-dd
 * 返回:
 * date: 格式:yyyy-MM-dd
 */
public static void pickDate(final IQuickFragment webLoader, WebView wv, JSONObject param, final Callback callback) {
    final String title = param.optString("title");
    String date = param.optString("datetime");
    final Calendar calendar = Calendar.getInstance();
    if (!TextUtils.isEmpty(date)) {
        calendar.setTime(DateUtil.convertString2Date(date, "yyyy-MM-dd"));
    }
    wv.post(new Runnable() {
        public void run() {
            DialogUtil.pickDate(webLoader.getPageControl().getActivity(), title, calendar, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    calendar.set(Calendar.YEAR, year);
                    calendar.set(Calendar.MONTH, monthOfYear);
                    calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                    String chooseDate = DateUtil.convertDate(calendar.getTime(), "yyyy-MM-dd");
                    Map<String, Object> map = new HashMap<>();
                    map.put("date", chooseDate);
                    callback.applySuccess(map);
                }
            });
        }
    });
}
 
源代码2 项目: kerkee_android   文件: KCDefaultBrowser.java
@Override
public void onProgressChanged(WebView view, int newProgress)
{
    if (mLoadingProgressIndicator != null && mLoadingProgressIndicator.getVisibility() == View.VISIBLE)
    {
        int curWidth = view.getWidth() * newProgress / 100;
        mLoadingProgressIndicator.getLayoutParams().width = curWidth;
        mLoadingProgressIndicator.requestLayout();
        if (curWidth == view.getWidth())
        {
            view.post(new Runnable()
            {
                @Override
                public void run()
                {
                    mLoadingProgressIndicator.getLayoutParams().width = 0;
                    mLoadingProgressIndicator.requestLayout();
                }
            });
        }
    }
}
 
源代码3 项目: MyBlogDemo   文件: BrowserActivity2.java
@Override
    public View initView(Bundle savedInstanceState) {
        View v = LayoutInflater.from(this).inflate(R.layout.activity_browser2, null);
        final String host = getIntent().getStringExtra("HOST");
        final WebView mWeb = (WebView) v.findViewById(R.id.web);
        mWeb.getSettings().setJavaScriptEnabled(true);
        mWeb.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        mWeb.post(new Runnable() {
            @Override
            public void run() {
//                mWeb.loadDataWithBaseURL(Constants.BASE_URL, host, Constants.MIME_TYPE, Constants.ENCODING, Constants.FAIL_URL);
                mWeb.loadUrl("http://svpano.oss-cn-hangzhou.aliyuncs.com/test/pinan/20066_20160527090324857/index.html?from=singlemessage&isappinstalled=0");

            }
        });

        return v;
    }
 
源代码4 项目: MyBlogDemo   文件: VRActivity.java
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vr);
        mWeb = (WebView) findViewById(R.id.wb);
        mWeb.getSettings().setJavaScriptEnabled(true);
        mWeb.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        mWeb.post(new Runnable() {
            @Override
            public void run() {
//                mWeb.loadDataWithBaseURL(Constants.BASE_URL, host, Constants.MIME_TYPE, Constants.ENCODING, Constants.FAIL_URL);
                mWeb.loadUrl("http://svpano.oss-cn-hangzhou.aliyuncs.com/test/pinan/20066_20160527090324857/index.html?from=singlemessage&isappinstalled=0");

            }
        });
    }
 
源代码5 项目: android-test   文件: JavascriptEvaluation.java
/**
 * Evaluates a script on a given WebView.
 *
 * <p>Scripts are only evaluated when a WebView is deemed sane. That is:
 *
 * <ul>
 *   <li>The WebView's back/forward list's last item agrees with the WebView
 *   <li>The WebView's reported content height is non-zero
 *   <li>The WebView's reported progress is 100
 *   <li>The document.documentElement object for the DOM of the selected window is non-null
 *       <ul>
 *         Scripts are evaluated on the WebKit/Chromium thread (that is - not the Main thread). A
 *         Future is returned which contains the result of the evaluation.
 */
static ListenableFuture<Evaluation> evaluate(
    final WebView view,
    final String script,
    final List<Object> arguments,
    @Nullable final WindowReference window) {
  UnpreparedScript unprepared = new UnpreparedScript(view, script, arguments, window);
  SanitizerTask sanitizer = new SanitizerTask(unprepared);
  view.post(sanitizer);
  ListenableFuture<PreparedScript> preparedScript =
      transform(sanitizer, SCRIPT_PREPARER, directExecutor());
  ListenableFuture<String> rawEvaluation =
      transformAsync(preparedScript, RAW_EVALUATOR, directExecutor());
  ListenableFuture<Evaluation> parsedEvaluation =
      transform(rawEvaluation, DECODE_EVALUATION, directExecutor());
  return parsedEvaluation;
}
 
源代码6 项目: PoupoLayer   文件: PopWebViewClient.java
@Override
public WebResourceResponse shouldInterceptRequest(final WebView webView, String url) {
    //运行在子线程
    Log.d(POP_TAG,"接收的url是:"+url);
    //hrzapi.invoke("printService",{'name':'123','param1':'123'})

    if(url.contains("__HRZ_QUEUE_HAS_MESSAGE_V1")){
        return null;
    }

    if (url.contains("hrz_client_msg")) {
        webView.post(new Runnable() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void run() {
                //必须运行在主线程
                webView.evaluateJavascript("javascript:__HRZCJSBridgeObject.drainMessageQueue();", new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String value) {
                        Log.d(POP_TAG,"onReceiveValue:"+value);
                        String postJson = value.replaceAll("\\\\", "");
                        if (!TextUtils.isEmpty(postJson)) {
                            if (mHybirdImpl != null) {
                                mHybirdImpl.invokeAppServices(postJson);
                            }
                        }
                    }
                });
            }
        });
        return null;
    }

    return shouldInterceptRequest(webView, url);
}
 
源代码7 项目: Web3View   文件: Web3ViewClient.java
private void injectScriptFile(WebView view) {
    String js = jsInjectorClient.assembleJs(view.getContext(), "%1$s%2$s");
    byte[] buffer = js.getBytes();
    String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);

    view.post(() -> view.loadUrl("javascript:(function() {" +
            "var parent = document.getElementsByTagName('head').item(0);" +
            "var script = document.createElement('script');" +
            "script.type = 'text/javascript';" +
            // Tell the browser to BASE64-decode the string into your script !!!
            "script.innerHTML = window.atob('" + encoded + "');" +
            "parent.appendChild(script)" +
            "})()"));
}
 
源代码8 项目: alpha-wallet-android   文件: Web3ViewClient.java
private void injectScriptFile(WebView view) {
    String js = jsInjectorClient.assembleJs(view.getContext(), "%1$s%2$s");
    byte[] buffer = js.getBytes();
    String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);

    view.post(() -> view.loadUrl("javascript:(function() {" +
            "var parent = document.getElementsByTagName('head').item(0);" +
            "var script = document.createElement('script');" +
            "script.type = 'text/javascript';" +
            // Tell the browser to BASE64-decode the string into your script !!!
            "script.innerHTML = window.atob('" + encoded + "');" +
            "parent.appendChild(script)" +
            "})()"));
}
 
源代码9 项目: quickhybrid-android   文件: UIApi.java
/**
 * 隐藏loading图标
 */
public static void closeWaiting(final IQuickFragment webLoader, WebView wv, JSONObject param, final Callback callback) {
    wv.post(new Runnable() {
        public void run() {
            webLoader.getPageControl().hideLoading();
            callback.applySuccess();
        }
    });
}
 
源代码10 项目: OsmGo   文件: MessageHandler.java
public void sendResponseMessage(PluginCall call, PluginResult successResult, PluginResult errorResult) {
  try {
    PluginResult data = new PluginResult();
    data.put("save", call.isSaved());
    data.put("callbackId", call.getCallbackId());
    data.put("pluginId", call.getPluginId());
    data.put("methodName", call.getMethodName());

    if (errorResult != null) {
      data.put("success", false);
      data.put("error", errorResult);
      Log.d(LogUtils.getCoreTag(), "Sending plugin error: " + data.toString());
    } else {
      data.put("success", true);
      data.put("data", successResult);
    }

    // Only eval the JS code if this is a valid callback id
    if (!call.getCallbackId().equals(PluginCall.CALLBACK_ID_DANGLING)) {
      final String runScript = "window.Capacitor.fromNative(" + data.toString() + ")";

      final WebView webView = this.webView;
      webView.post(new Runnable() {
        @Override
        public void run() {
          webView.evaluateJavascript(runScript, null);
        }
      });
    } else {
      bridge.storeDanglingPluginResult(call, data);
    }

  } catch (Exception ex) {
    Log.e(LogUtils.getCoreTag(), "sendResponseMessage: error: " + ex);
  }
}
 
源代码11 项目: focus-android   文件: FocusWebViewClient.java
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, final WebResourceRequest request) {
    // Only update the user visible URL if:
    // 1. The purported site URL has actually been requested
    // 2. And it's being loaded for the main frame (and not a fake/hidden/iframe request)
    // Note also: shouldInterceptRequest() runs on a background thread, so we can't actually
    // query WebView.getURL().
    // We update the URL when loading has finished too (redirects can happen after a request has been
    // made in which case we don't get shouldInterceptRequest with the final URL), but this
    // allows us to update the URL during loading.
    if (request.isForMainFrame()) {

        // WebView will always add a trailing / to the request URL, but currentPageURL may or may
        // not have a trailing URL (usually no trailing / when a link is entered via UrlInputFragment),
        // hence we do a somewhat convoluted test:
        final String requestURL = request.getUrl().toString();
        final String currentURL = currentPageURL;

        if (UrlUtils.urlsMatchExceptForTrailingSlash(currentURL, requestURL)) {
            view.post(new Runnable() {
                @Override
                public void run() {
                    if (callback != null) {
                        callback.onURLChanged(currentURL);
                    }
                }
            });
        }

        if (callback != null) {
            callback.onRequest(request.hasGesture());
        }
    }

    return super.shouldInterceptRequest(view, request);
}
 
源代码12 项目: JSBridge   文件: JSBridge.java
private static JSONObject callAPICallbackComplete(final WebView wv, JSONObject inJsonObj, final JSONObject outJsonObj) {
    final String callbackID = JSBridge.getString(inJsonObj, "callbackID");
    if(callbackID != null) {
        String str = JSBridge.getString(inJsonObj, "removeAfterExecute");
        if(str == null) str = "true";
        final String removeAfterExecute = str;
        wv.post(new Runnable() {
            @Override
            public void run() {
            	wv.loadUrl("javascript: JSBridge._invokeJSCallback('"+callbackID+"',"+removeAfterExecute+",'"+outJsonObj.toString()+"');");
            }
        });
    }
    return outJsonObj;
}
 
源代码13 项目: prebid-mobile-android   文件: AdViewUtils.java
static void fixZoomIn(final WebView webView, final int expectedWidth, final int expectedHeight) {

        final int minViewHeight = 10;

        //500 millis to find a webViewContentHeight
        //usually it takes 200 millis
        final int contentHeightDelayMillis = 100;
        int queueLimit = 5;

        final LimitedQueueContainer<Integer> contentHeightQueue = new LimitedQueueContainer<>(queueLimit);
        final Set<Integer> contentHeightSet = new HashSet<>(queueLimit);

        webView.post(new Runnable() {
            @Override
            public void run() {

                int webViewHeight = webView.getHeight();

                //case: check if a publisher have called PublisherAdView.setAdSizes()
                //if publisher does not call PublisherAdView.setAdSizes() it is less then 10(e.g 3 instead of 750)
                if (webViewHeight > minViewHeight) {
                    int webViewContentHeight = webView.getContentHeight();

                    //case: wait when webView.getContentHeight() >= expected height from HTML
                    //webView does not contain getContentWidth()
                    if (webViewContentHeight < expectedHeight) {
                        LogUtil.d("fixZoomIn" + " webViewContentHeight:" + webViewContentHeight);
                        contentHeightQueue.add(webViewContentHeight);
                        if (contentHeightQueue.isFull()) {

                            contentHeightSet.clear();
                            contentHeightSet.addAll(contentHeightQueue.getList());

                            if (contentHeightSet.size() == 1) {

                                //case: if it is not possible to get an expected height se scale as is
                                setWebViewScale(webView, webViewHeight, webViewContentHeight);
                                return;
                            }
                        }
                        webView.postDelayed(this, contentHeightDelayMillis);
                    } else {
                        setWebViewScale(webView, webViewHeight, webViewContentHeight);
                    }
                }

            }
        });
    }