专高二day13-新闻图文详情模块——webview使用以及js交互以及浏览器编写

//在当前软件显示网页


        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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值