如何在webview中传递参数? [英] How to pass parameters in webview?

查看:2288
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆