提交表单不适用于Webview目标SdkVersion 29

问题描述

**升级targetdk版本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();
    }
}