我的网页浏览效果如下:
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);
}
});
地址只返回“True”或“False”字符串,具体取决于用户是否登录webview。好消息是它返回一个字符串,但它总是返回False,即使我已经使用webview登录到我的网站。我知道地址https://str8red.com/loggedincheck
按预期工作,因为它既适用于网络浏览器,也适用于iOS应用。
我假设当点击按钮时它没有使用相同的webview,因此不知道用户是否登录。
我已经在网上找到了一个解决方案,但已经解开了。任何帮助将不胜感激。
如果您需要任何其他信息,请不要犹豫。
答案 0 :(得分:1)
确实,它总是会返回false,因为您的Volly
代码和webView
代码之间没有任何关系,因此基于此answer的正确方法,您必须使用evaluateJavascript
代替凌空,通过传递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
}
});