我一直致力于网络封装应用。我使用webview加载一些需要用户登录的网页。为了控制登录过程以获得自动登录,我在本地创建了一个登录页面,登录过程正常。登录页面将在本地存储用户登录信息,以便下次用户打开应用程序时,将跳过登录页面并显示登录的网页。
但是,我遇到了注销问题。用户如何返回本地登录页面?我想的是在webview上面创建一个注销栏,在那里有一个注销按钮。还有更好的方法吗?
更糟糕的是,网页上还有一个注销按钮,该按钮会将用户引导至在线登录页面,该页面无法在本地存储登录信息,因为它似乎无法在webview上检索HTML文本字段信息并将信息传递给Java(或者我不再需要本地登录页面)。有没有办法避免这种情况?
谢谢!
答案 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将启用并使用此接口。