如何正确处理android web wrapper app的webview中的注销?

时间:2014-08-16 21:22:57

标签: android webview wrapper

我一直致力于网络封装应用。我使用webview加载一些需要用户登录的网页。为了控制登录过程以获得自动登录,我在本地创建了一个登录页面,登录过程正常。登录页面将在本地存储用户登录信息,以便下次用户打开应用程序时,将跳过登录页面并显示登录的网页。

但是,我遇到了注销问题。用户如何返回本地登录页面?我想的是在webview上面创建一个注销栏,在那里有一个注销按钮。还有更好的方法吗?

更糟糕的是,网页上还有一个注销按钮,该按钮会将用户引导至在线登录页面,该页面无法在本地存储登录信息,因为它似乎无法在webview上检索HTML文本字段信息并将信息传递给Java(或者我不再需要本地登录页面)。有没有办法避免这种情况?

谢谢!

1 个答案:

答案 0 :(得分:2)

查看Apache Cordova如何处理Java和JavaScript之间的通信。

要从Java执行JavaScript,请在​​webview上加载javascript URL:

mWebView.loadURL("javascript:codeToExec();");

您还可以在WebView中从JS调用本机(Java)代码:

第一种方法是使用@JavascriptInterface注释以及WebView' addJavascriptInterface方法。 但是,对于在较旧API级别上运行的设备,这是不安全的。

调用本机代码的第二种方法是调用 URL,并使用WebViewClients shouldOverrideUrlLoading方法处理URL:< / p>

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("http://execute_code/")) {
        // execute native code based on action in url
    }
    ..
}

由于使用addJavascriptInterface进行调用效率更高,如果正在运行的API级别为&gt; = JELLY_BEAN_MR1,Cordova将启用并使用此接口。