提交表单在 Web 视图目标Sdk版本29上不起作用



**升级targetsdk版本29后,我不得不将与XWalkView配合使用的应用程序转换为Android Webview,因为该应用程序在Android 10上不起作用。现在我的申请打开了,但表格没有提交。这就是为什么支付屏幕不会打开的原因。我在PayActivity中写了下面的代码示例。**

myInterface = new WebAppInterface(PayActivity.this,getApplicationContext());
payWebView.addJavascriptInterface(myInterface, "NativePay");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
WebSettings webSettings = payWebView.getSettings();
payWebView.getSettings().setDomStorageEnabled(true);
payWebView.getSettings().setAllowFileAccessFromFileURLs(true);
payWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
payWebView.getSettings().setAllowContentAccess(true);
payWebView.getSettings().setJavaScriptEnabled(true);
payWebView.getSettings().setDatabaseEnabled(true);
payWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
payWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading (WebView view, String url) {
return true;
}
public void onPageFinished(WebView view, String url) {
if (url.contains("/payment/online_odeme_basarili")) {
setResult(RESULT_OK);
finish();
} else if (url.contains("/payment/online_odeme_basarisiz")) {
setResult(RESULT_FIRST_USER);
finish();
}

}
});

payWebView.loadUrl("https://" + MainActivity.domainURL + "/payment/online_odeme/" + "1233 + "/" + "123" + "/"  + "01", null);

build.gradle

compileSdkVersion 29
buildToolsVersion '29.0.2'
defaultConfig {
applicationId "..."
minSdkVersion 16
targetSdkVersion 29
versionCode 6
versionName "1.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

我的表单是这样的

<form id="bankPost" method="post" action="<?php echo $url; ?>" style="width: 100%;display: block;">
<input type="hidden" name="exmple" value="12">
<input type="submit" class="button-confirm" value="Accept"></form>


问题已解决。

我在PayActivity中添加了以下代码。

@Override
protected void onPause() {
super.onPause();
if (payWebView != null) {
payWebView.pauseTimers();
}
}
@Override
protected void onResume() {
super.onResume();
if (payWebView != null) {
payWebView.resumeTimers();
}
}

最新更新