WebView

HTML

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script type="text/javascript">
			//找到onClick方法
			function changeText(){
				document.getElementById("p_id").innerText="aaaaaa";
			}
			
			function changeImg(){
				document.getElementById("img_id").src="img/HBuilder.png";
			}
			
			//有参
			function changeText(text){
				document.getElementById("p_id").innerText=text
			}
			
			function changeImg(image){
				document.getElementById("img_id").src=image;
			}
			
			//调用android中的方法
			function tusi(){
				window.yu.tusi();
			}
			</script>
		<title></title>
	</head>
	<body>
		<p id="p_id">文字</p>
		<img id="img_id" width="200" height="200" src="https://cn.bing.com/th?id=OSA.9ab1ef02419ca997bbd5ab4b80fadfd3&w=186&h=88&c=7&rs=2&qlt=80&cdv=1&pid=PopNow" />
		<button id="button1_id"  onclick="">谈对话框</button>
		<button id="button2_id" onclick="changeText('bbbb')">改变文字</button>
		<button id="button3_id" onclick="changeImg('img/HBuilder.png')">改变图片</button>
		<button id="button4_id"  onclick="tusi()">吐司</button>
	</body>
</html>

MainActivity

package com.example.day13_javas;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView=findViewById(R.id.web);

        webView.loadUrl("https://blog.csdn.net/qq_34178710/article/details/99689359"); // 加载网页
        webView.loadUrl("file:///android_asset/demo1.html");//加载资源文件夹下html文件
        webView.setWebViewClient(new WebViewClient()); //二次设置给webview

        webView.getSettings().setJavaScriptEnabled(true);//控制js
        webView.getSettings().setAllowFileAccess(true);//访问内存文件夹
        webView.addJavascriptInterface(this,"yu");//js调用安卓 - 对外暴露出一个接口

        webView.getSettings().setUseWideViewPort(true); //打开页面 适应屏幕
        webView.getSettings().setLoadWithOverviewMode(true);

        webView.getSettings().setBuiltInZoomControls(true);//支持比例缩放
        webView.getSettings().setSupportZoom(true);
        
        //加载https设置
        webSettings.setJavaScriptEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        webSettings.setDomStorageEnabled(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setSavePassword(true);
        webSettings.setSupportZoom(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSettings.setUseWideViewPort(true);
 		webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//                super.onReceivedSslError(view, handler, error);
                handler.proceed();
            }
        });

    }
    //js访问安卓
    @JavascriptInterface
    public void camera(){
        Toast.makeText(this, "照相", Toast.LENGTH_SHORT).show();


    }

    public void click(View view) {
        webView.loadUrl("JavaScript:image('https://cn.bing.com/th?id=OSA.fed6bb68fde245374a4c7b91ca77f546&w=186&h=88&c=7&rs=2&qlt=80&cdv=1&pid=PopNow')");

        webView.clearHistory(); // 清除历史记录

    }


    //释放资源
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(webView!=null){
            webView.destroy();//销毁
            webView=null;

        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用程序中,WebView是一个常用的控件,用于在应用程序中显示网页。在混淆代码时,需要注意WebView的混淆问题。以下是一些混淆WebView时需要注意的事项: 1.在proguard-rules.pro文件中添加以下代码,以避免WebView的混淆: ```proguard -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public android.webkit.WebResourceResponse *(android.webkit.WebView, java.lang.String, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public android.webkit.WebResourceResponse *(android.webkit.WebView, android.webkit.WebResourceRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebBackForwardList); } -keepclassmembers class * extends android.webkit.WebViewClient { public boolean *(android.webkit.WebView, android.view.KeyEvent); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.net.http.SslError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.ClientCertRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.HttpAuthHandler, java.lang.String, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public boolean *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.os.Bundle); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError, android.webkit.WebResourceResponse); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.os.Bundle); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError, android.os.Bundle); } ``` 2.在WebViewClient实例中,需要保留onPageFinished()方法中的代码,以确保WebView正确加载图片。具体代码如下: ```java @Override public void onPageFinished(WebView view, String url) { if(!webView.getSettings().getLoadsImagesAutomatically()) { webView.getSettings().setLoadsImagesAutomatically(true); } } ``` 3.在WebView初始化时,需要设置加载图片的选项。具体代码如下: ```java public void init() { if(Build.VERSION.SDK_INT >= 19) { webView.getSettings().setLoadsImagesAutomatically(true); } else { webView.getSettings().setLoadsImagesAutomatically(false); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值