如何在webview中传递参数? [英] How to pass parameters in webview?
问题描述
我已经实现了webview,现在我需要使用webiew传递参数.这些参数我需要传入javascript函数.在ios中,它工作正常(此处的键将类似于"abc1234",值将类似于{"token":"abcd123efgr456"}),方法是当用户执行此操作时在应用>中打开此屏幕加载网址并直接登录到网络.
I have implemented webview, now i need to pass parameters with webiew. These parameters i need to pass in javascript function. In ios it is working fine (here key will be like "abc1234" and value will be like {"token":"abcd123efgr456"}) by doing this when user opens this screen in app > load web url and directly will be logged in to web.
我已经尝试过这种方式....但是它只是加载了登录门户,应该直接登录
I have tried this way....but it just loading login portal, it should directly logged in
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);
public class WebViewClient extends android.webkit.WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
return super.shouldInterceptRequest(view, request);
}
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return super.shouldInterceptRequest(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String jsStringTemp = "javascript: localStorage.setItem(" + "\'aqwer13=\'" + ",\'" + jsonObject + "\');void(0);";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
view.evaluateJavascript("localStorage.setItem('aqwer13=','{\"token\":\"88eff28c29d4337acb3eb03b9fb4e7396105af7a5d210cd866a3ac56f0673cdd\"}')", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.d("====","onReceiveValue :: "+value);
}
});
} else {
view.loadUrl("javascript:localStorage.setItem('aqwer13=','{\"token\":\"88eff28c29d4337acb3eb03b9fb4e7396105af7a5d210cd866a3ac56f0673cdd\"}')");
}
//view.loadUrl(url);
}
}
请帮助我,任何帮助将不胜感激. 谢谢
Please help me out with this, any help would be appreciated. Thanks
推荐答案
我以前没有使用本地存储来完成此操作,但是您不能执行以下操作:
I haven't done this with local storage before, but couldn't you do something like:
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
// strip out the #onPageFinished code
webView.setWebViewClient(new WebViewClient());
// run your setup JS
webView.loadUrl("javascript:localStorage.setItem('vcj_dG9rZW4=','{\"token\":\"88eff28c29d4337acb3eb03b9fb4e7396105af7a5d210cd866a3ac56f0673cdd\"}')");
// now load the actual URL
webView.loadUrl(url);
行得通吗?您还可以使用evaluateJavascript
并在resultCallback
中执行webView.loadUrl(url)
位,以便在JS的第一位完成后运行.我不知道这样连续两次使用loadUrl
是否会打断第一个-我只用过cookie来做这种事情.
does that work? You could also use evaluateJavascript
and do the webView.loadUrl(url)
bit in the resultCallback
, so that runs after the first bit of JS finishes. I don't know if using loadUrl
twice in a row like that will interrupt the first one - I've only ever used cookies for this kind of thing.
您始终可以添加一些加载网址" javascript到JS代码的末尾,所以它在做两件事,您只需要调用一次loadUrl
?
You could always add some "load a URL" javascript to the end of your JS code, so it's doing two things and you only need to call loadUrl
once?
这篇关于如何在webview中传递参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!