//在当前软件显示网页
wv.loadUrl("https://baidu.com");
wv.setWebViewClient(new WebViewClient());
package com.bw.day13_webview_js;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
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.Toast;
public class MainActivity extends AppCompatActivity {
private WebView wv;
private ProgressBar pb;
String str="<!DOCTYPE html>\n" +
"<html>\n" +
"\t<head>\n" +
"\t\t<meta charset=\"gb2312\">\n" +
"\t\t<title></title>\n" +
"\t</head>\n" +
"\t<h1>你好,你好</h1>\n" +
"\t<body>\n" +
"\t</body>\n" +
"</html>";
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wv);
pb = (ProgressBar) findViewById(R.id.pb);
progressDialog=new ProgressDialog(this);
progressDialog.setTitle("进度条对话框");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.dismiss();
//wv.loadUrl("https://baidu.com");
//wv.loadData(str,"text/html","UTF-8");
//wv.loadDataWithBaseURL(null,str,"text/html","utf-8",null);
wv.loadUrl("file:///android_asset/test.html");
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pb.setVisibility(View.VISIBLE);
progressDialog.show();
Toast.makeText(MainActivity.this, "开始", Toast.LENGTH_SHORT).show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
pb.setVisibility(View.INVISIBLE);
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "结束", Toast.LENGTH_SHORT).show();
}
});
wv.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
pb.setProgress(newProgress);
progressDialog.setProgress(newProgress);
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
return true;
}
});
WebSettings settings = wv.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
}
}
与js交互
public void androidJs(View view){
//wv.loadUrl("javascript:test()");//调用无参的
wv.evaluateJavascript("javascript:test2('天津')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Toast.makeText(MainActivity.this, ""+s, Toast.LENGTH_SHORT).show();
}
});
//改变里面的东西
wv.evaluateJavascript("aaa('你好')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
//改变js里面的图片
wv.evaluateJavascript("imga('https://img2.baidu.com/it/u=650413002,2643236847&fm=253&fmt=auto&app=138&f=JPEG?w=751&h=500')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
}
});
//sd卡图片
wv.loadUrl("javascript:imga('/sdcard/zt.jpg')");
}
js页面代码
<!DOCTYPE html>
<html>
<head>
</head>
<script type="text/javascript">
function test(){
alert(" hello , world !");
}
function test2(str){
return str+"风景很美丽";
}
function showConfirm(){
confirm("访问百度:https://www.baidu.com");
}
function showPrompt(){
var string=prompt("请输入用户名","用户名");
}
function test1(){
justTest.test();
}
function aaa(text){
document.getElementById("textt").innerText=text;
}
function imga(url){
document.getElementById("img_id").src=url;
}
</script>
<body>
<h1>这是一个标题</h1>
<p>这是一个段落</p>
<input type="button" onclick="test()" value="test" />
<br>
<input type = "button" onclick = "test2()" value = "test2"/>
<br>
<input type="button" onclick = "showConfirm()" value = "showConfirm"/>
<br>
<input type = "button" onclick = "showPrompt()" value = "showPrompt"/>
</body>
<input type="button" onclick="test1()" value="test1" />
<p id="textt" onclick="aaa('哈哈哈')">这是一个段落</p>
<img id="img_id" src="https://img2.baidu.com/it/u=542540439,620676850&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800" onclick="imga('https://img2.baidu.com/it/u=3853345508,384760633&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=1200')">
</html>
js调用安卓 根据js里test1
wv.addJavascriptInterface(this,"justTest");
@JavascriptInterface
public void test(){
Toast.makeText(this, "js调用安卓", Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void test(){
Toast.makeText(this, "js调用安卓", Toast.LENGTH_SHORT).show();
}
//打电话
@JavascriptInterface
public void callphone(){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
Uri parse = Uri.parse("tel:15001293123");
intent.setData(parse);
startActivity(intent);
}
//截图
@JavascriptInterface
public void carimf(){
View decorView = getWindow().getDecorView();
decorView.setDrawingCacheEnabled(true);
Bitmap drawingCache = decorView.getDrawingCache();
iv.setImageBitmap(drawingCache);
}
WebSettings settings = wv.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//设置缓存格式
settings.setDefaultTextEncodingName("UTF-8");