Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android检查是否登录_Android_Android Asynctask_Return - Fatal编程技术网

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
检查您是否已登录?