Android检查是否登录
我正在尝试一种简单的方法来检查用户保存的登录凭据是否正确。。。到目前为止,我已经:Android检查是否登录,android,android-asynctask,return,Android,Android Asynctask,Return,我正在尝试一种简单的方法来检查用户保存的登录凭据是否正确。。。到目前为止,我已经: public boolean checkLogin() { final SharedPreferences prefs = this.getSharedPreferences(AndroidGPSTrackingActivity.class.getSimpleName(), this.MODE_PRIVATE); String userName =
public boolean checkLogin() {
final SharedPreferences prefs = this.getSharedPreferences(AndroidGPSTrackingActivity.class.getSimpleName(),
this.MODE_PRIVATE);
String userName = prefs.getString("userName", "");
if (userName.isEmpty()) {
Log.i("UserName", "UserName not found.");
return false;
}
String password = prefs.getString("password", "");
if (password.isEmpty()) {
Log.i("Password", "Password not found.");
return false;
}
mCheckTask = new CheckSavedLogin(userName, password, this);
mCheckTask.execute((Void) null);
return mCheckTask.execute((Void) null);//make this return true/false
}
而且:
public class CheckSavedLogin extends AsyncTask<Void, Void, Boolean> {
public final String mUserName;
public final String mPassword;
public boolean success;
public Context context;
CheckSavedLogin(String userName, String password, Context context) {
mUserName = userName;
mPassword = password;
this.context = context.getApplicationContext();
}
protected Boolean doInBackground(Void... params) {
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://173.242.94.66/scripts/appLogin.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("userName", mUserName));
nameValuePairs.add(new BasicNameValuePair("password", mPassword));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
String responseStr = EntityUtils.toString(response.getEntity());
JSONObject json = new JSONObject(responseStr);
success = json.getBoolean("success");
Log.d("Response", responseStr);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return success;
}
@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);
if (success) {
storeLoginDetails(mUserName, mPassword);
//RETURN TRUE HERE?
}
}
@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
}
公共类CheckSavedLogin扩展异步任务{
公共最终字符串博物馆名称;
公共最终字符串mPassword;
公众的成功;
公共语境;
CheckSavedLogin(字符串用户名、字符串密码、上下文){
mUserName=用户名;
mPassword=密码;
this.context=context.getApplicationContext();
}
受保护的布尔doInBackground(Void…params){
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://173.242.94.66/scripts/appLogin.php");
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“用户名”,mUserName));
添加(新的BasicNameValuePair(“密码”,mPassword));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpclient.execute(httppost);
字符串responsest=EntityUtils.toString(response.getEntity());
JSONObject json=新的JSONObject(responsest);
success=json.getBoolean(“success”);
Log.d(“响应”,responsest);
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
回归成功;
}
@凌驾
受保护的void onPostExecute(最终布尔值成功){
mAuthTask=null;
显示进度(假);
如果(成功){
storeLoginDetails(博物馆名称、mPassword);
//这里是真的吗?
}
}
@凌驾
受保护的void onCancelled(){
mAuthTask=null;
显示进度(假);
}
}
我只是不知道如何根据响应使这些返回“true”或“false”通常我会提供回调
public interface LoginHandler
{
onLoginComplete(boolean didLogIn);
}
然后在执行之前,我会在AsyncTask中注册处理程序
asyncTask.setHandler(new MyLoginHandler());
asyncTask.execute(0);
然后在调用活动激发时返回,您可以通过处理程序检索结果
public class MyLoginHandler implements LoginHandler
{
public void onLoginComplete(boolean didLogIn)
{
//Do what you want with didLogIn
}
}
你好为什么不使用
sessionToken
检查您是否已登录?