Android Studio:Webview和会话基础
我有一个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
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版本来说,它甚至可能是一个更干净的解决方案。我希望我所说的有意义,意味着我理解了你的回答。这正是我的意思,祝你好运。好消息,我很高兴我理解了。走吧,哈哈。保重易卜拉欣。