通过webview修改网页内容

有个需求,通过webview在打开第三方H5页面的时候,把卡号设置到第三方页面的卡号输入框。代码完整如下:

package com.example.study2020;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    String cardNo="6226090213148888";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获得控件
        WebView mWebView = (WebView) findViewById(R.id.wbPay);
        WebSettings webset = mWebView.getSettings();
        webset.setJavaScriptEnabled(true);// 表示webview可以执行服务器端的js代码
        webset.setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口
        //访问网页
        //系统默认会通过手机浏览器打开网页,为了能够直接通过WebView显示网页,则必须设置
        mWebView.loadUrl("http://192.168.195.37:8092/springboot/unpay");
        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //使用WebView加载显示url
                view.loadUrl(url);
                //返回true
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                String jsFunction = "javascript:function setCardNo() {" +
                        //"alert('123');" +
                        "document.getElementById('cardNo').value='"+cardNo+"';}";
                 //注入 js函数
                view.loadUrl(jsFunction);
                //调用 js函数
                view.loadUrl("javascript:setCardNo();");

            }
        });
    }
}

注意:

1.如果需要支持非https,需要在AndroidManifest.xml里面的Application添加android:usesCleartextTraffic="true"

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme">

2.另外使用webview需要加权限

  <!-- 添加网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />

猜你喜欢

转载自blog.csdn.net/figo0423/article/details/106021822
今日推荐