android - 在 Android 中连接丢失时重新提交表单

标签 android forms webview form-submit

我正在尝试实现一个应用程序,它使用 WebView 来显示一个内部有表单的网站。问题是,当用户填写表格并在按下发送按钮之前,互联网连接丢失。在这种情况下,我收到 onErrorReceived 回调,这是我的实现:

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    mDisconnected = true;
    mDisconnectUrl = failingUrl;
    mWebView = view;
    mWebView.saveState(mWebViewState);
}

所以我尝试将表单的内容和失败的 url 存储在这里,这样当连接再次建立时我可以继续发送它。所以我有另一个线程试图与服务器建立新的 Socket 连接,当它成功时,我在我的 WebViewClient 类 reconnect() 中调用一个函数:

void reconnect(Context appContext) {
    if (mDisconnected) {
        try {
            ((Activity) appContext).runOnUiThread(new Runnable() {
                public void run() {
                    mWebView.reload();
                    mWebView.restoreState(mWebViewState);
                }
            });
        } catch (Exception e) {
            mWebView.goBack();
        }
        mDisconnected = false;
    }
}

所以我尝试重新加载并恢复表单数据,以便 WebView 可以继续其发送操作。问题是当页面再次加载时,表单中输入的所有数据都丢失了,并且不会继续发送操作,该操作在连接丢失之前已经被点击过。有任何想法,如何解决这个问题。

数据非常敏感,所以继续发送很重要。也可以让用户重新填写表单,重新发送,但在这种场景下是不希望的。

编辑: 也许这个问题可以简化。有没有什么功能或方法可以在WebViewClient中刷新一个网站,它会从它离开的地方继续并将表单数据检索到问题发生之前的状态。

最佳答案

使用数据库存储表单内容,然后通过服务发送数据。 提交成功后删除数据库内容。

关于android - 在 Android 中连接丢失时重新提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222317/

相关文章:

Android:OpenCore 是否支持音频效果?

java - 返回上一个屏幕不工作

javascript - 如何使用javascript获取<select>标签和radio标签的值

android - WebView 不调整大小

Android 模拟器无法加载完整网站

java - 我在图像或gradle上有错误,不知道哪一个?

java - 从启动器隐藏应用程序图标

javascript - 通过 JQUERY 检查单选按钮组的值?

css - 图形选择框

android - Android中如何显示webView并隐藏其他元素