我使用webview和php创建一个Android应用程序。我写了一个PHP来获取用户登录的值(如果没有登录,则为0)如果用户登录(通过app ofcourse)我需要更改选项菜单的图标,如果没有用户登录图标会有所不同。然而,php脚本没有在android中获得正确的值,但是当我从计算机打开它并通过登录和退出网站进行测试时它的工作正常
这是调用isloggedin()函数
的选项菜单的代码register=omenu.findItem(R.id.registeraccount);
login=omenu.findItem(R.id.loginitem);
String checklogin= isloggedin();
Toast.makeText(this, checklogin, Toast.LENGTH_SHORT).show();
if(!checklogin.equalsIgnoreCase("0"))
{
register.setIcon(R.drawable.account);
register.setTitle("Account");
login.setIcon(R.drawable.logout);
login.setTitle("Logout");
}
else{
register.setIcon(R.drawable.register);
register.setTitle("Register");
login.setIcon(R.drawable.login);
login.setTitle("Login");
}
isloggedin()函数
public String isloggedin()
{
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("url/checklogin.php");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httpPost, responseHandler);
return response;
}catch (Exception e)
{
return "";
}
}
然后我还在webviewclient的onpagefinished()方法上调用了invalidateoptionsmenu(),以便可以重新创建optionsmenu并在需要时更新图标
loadsite.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
progressBar.setVisibility(View.VISIBLE);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
invalidateOptionsMenu();
}
});
;
loadsite.loadUrl("url");
通过isloggedin()函数执行的php脚本始终返回0,无论用户是否已登录。但是,当我从笔记本电脑登录时,脚本返回1或除0以外的任何其他值以指示哪个用户已登录
php脚本
global $current_user;
$current_user = wp_get_current_user();
$id=$current_user->ID
echo $id