Android Studio:Webview和会话基础

Android Studio:Webview和会话基础,android,webview,Android,Webview,我有一个webview,其工作原理如下: wv = (WebView) findViewById(R.id.wv); //Enable JavaScript wv.getSettings().setJavaScriptEnabled(true); wv.setFocusable(true); wv.setFocusableInTouchMode(true); //Set Render Priority To High wv.getSetti

我有一个webview,其工作原理如下:

    wv = (WebView) findViewById(R.id.wv);
    //Enable JavaScript
    wv.getSettings().setJavaScriptEnabled(true);
    wv.setFocusable(true);
    wv.setFocusableInTouchMode(true);
    //Set Render Priority To High
    wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    wv.getSettings().setDomStorageEnabled(true);
    wv.getSettings().setDatabaseEnabled(true);
    wv.getSettings().setAppCacheEnabled(true);
    wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    //Load Url
    wv.loadUrl("https://str8red.com/");
然后,单击按钮时会运行以下代码:

    button.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            final RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
            StringRequest stringRequest = new StringRequest(Request.Method.GET,"https://str8red.com/loggedincheck",

                    new Response.Listener<String>(){
                        @Override
                        public void onResponse(String response) {
                            textView.setText(response);
                            requestQueue.stop();
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    textView.setText("Something went wrong");
                    error.printStackTrace();
                    requestQueue.stop();
                }
            });
            requestQueue.add(stringRequest);
        }
    });
button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
final RequestQueue RequestQueue=Volley.newRequestQueue(MainActivity.this);
StringRequest StringRequest=新的StringRequest(Request.Method.GET)https://str8red.com/loggedincheck",
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
setText(响应);
requestQueue.stop();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
setText(“出了问题”);
错误。printStackTrace();
requestQueue.stop();
}
});
添加(stringRequest);
}
});
地址只返回一个字符串“True”或“False”,具体取决于用户是否登录到webview。好消息是它返回一个字符串,但它总是返回False,即使我使用webview登录到我的站点。我知道地址
https://str8red.com/loggedincheck
可以在web浏览器和iOS应用程序中正常工作

我假设当点击按钮时,它没有使用相同的webview,因此不知道用户是否登录

我曾在网上寻找解决方案,但没有成功。任何帮助都将不胜感激


如果您需要任何其他信息,请毫不犹豫地询问。

事实上,它总是返回false,因为您的
Volly
代码与您的
webView
代码之间没有关系,因此基于此,正确的方法是,您必须使用
evaluateJavascript
而不是volley,通过传递
javaScript
函数,您可以了解用户情况

wv.evaluateJavascript("(function() { return 'this'; })();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Prints: "this"

        //check for user case based on javaScriptFunction
    }
});
wv.evaluateJavascript(((function(){return'this';})();”,new ValueCallback(){
@凌驾
公共void onReceiveValue(字符串s){
Log.d(“LogName”,s);//打印:“this”
//基于javaScriptFunction检查用户案例
}
});

好的,所以我们必须在android上使用与iOS不同的方法。感谢您的快速响应。我不知道是否有更简单的方法,但代码将无法在webView和
volley
code之间建立关系。没关系,我将删除volley部分。因此,当他们登录时,我将在该页面上的javascript中包含一些变量,并使用所述的wv.evaluateJavascript将它们传递回本机应用程序。对于iOS版本来说,它甚至可能是一个更干净的解决方案。我希望我所说的有意义,意味着我理解了你的回答。这正是我的意思,祝你好运。好消息,我很高兴我理解了。走吧,哈哈。保重易卜拉欣。