webview基本设置:
private void setWebView(WebView webView) {
WebSettings seeting = webView.getSettings();
seeting.setJavaScriptEnabled(true);
// webView.requestFocus();
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//返回true,在app内打开网页否则使用手机浏览器开网页。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
getSupportActionBar().setTitle(title);
}
});
}
通过上面的设置就可以使用webview.loadurl
在app内展示网页了。
js调用app中的方法
webView.addJavascriptInterface(new JsObject(), "injectedObject");
app执行javascript方法
public void loadJavascript(String javascript) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// In KitKat+ you should use the evaluateJavascript method
mWebView.evaluateJavascript(javascript, new ValueCallback<String>() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onReceiveValue(String s) {
JsonReader reader = new JsonReader(new StringReader(s));
// Must set lenient to parse single values
reader.setLenient(true);
try {
if(reader.peek() != JsonToken.NULL) {
if(reader.peek() == JsonToken.STRING) {
String msg = reader.nextString();
if(msg != null) {
Toast.makeText(getActivity().getApplicationContext(),
msg, Toast.LENGTH_LONG).show();
}
}
}
} catch (IOException e) {
Log.e("TAG", "MainActivity: IOException", e);
} finally {
try {
reader.close();
} catch (IOException e) {
// NOOP
}
}
}
});
} else {
mWebView.loadUrl("javascript:"+javascript);
}
}
html选择文件
重载webview的setWebChromeClient方法,例:
mWebView.setWebChromeClient(new WebChromeClient() {
public boolean onShowFileChooser(
WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams) {
if(mFilePathCallback != null) {
mFilePathCallback.onReceiveValue(null);
}
mFilePathCallback = filePathCallback;
//选择文件代码.....
}