有个需求,通过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" />