2016-12-21 5 views
0

これは私の簡単なユーザログインasynkタスクであると私は内の値を格納している、ここからも、私はAndroidのお客様ログイン

class logintask extends AsyncTask<String, Void, String> { 

    @Override 
    protected void onPreExecute() { 
     pdilog = new ProgressDialog(LoginActivity.this); 
     pdilog.setMessage("Please Wait...."); 
     pdilog.show(); 
     super.onPreExecute(); 
     } 


    @Override 
    protected String doInBackground(String... params) { 
     JSONObject jsonObject; 
     try { 
      response = LoginPostHit.getJSONfromURL(params[0], params[1]); 
      JSONObject _jobject = new JSONObject(response.toString()); 
      customerid = _jobject.getString("CustomerID"); 
      serverresponse = _jobject.getString("Result"); 
      emailaddress=_jobject.getString("EmailAddress"); 
      customername = _jobject.getString("CustomerName"); 
      mobilenumber = _jobject.getString("MobileNumber"); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
     } 
     return response; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     pdilog.dismiss(); 
     super.onPostExecute(result); 
     if (serverresponse.equals("Success")) { 
      Intent i = new Intent(LoginActivity.this, MainActivity.class); 
      SharedPreferences.Editor editor = getSharedPreferences(AppConstants.VERIFICATION, MODE_PRIVATE).edit(); 
      editor.putString(AppConstants.LOGGEDIN, "1"); 
      editor.putString(AppConstants.CUSTOMERID, customerid); 
      editor.putString(AppConstants.CUSTOMERNAME, customername); 
      editor.putString(AppConstants.CUSTOMERMOBILENUMBER, mobilenumber); 
      editor.putString(AppConstants.CUSTOMEREMAIL,emailaddress); 
      editor.commit(); 
      i.putExtra("CustomerName",customername); 
      startActivity(i); 
      } else { 
       final Dialog dialog = new Dialog(LoginActivity.this); 
       dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON); 
       dialog.setContentView(R.layout.wrongusrnamepass); 
       //dialog.setTitle("Wrong Credentials"); 
       TextView text = (TextView) dialog.findViewById(R.id.textDialog); 
       text.setText("Incorrect Email/Password Combination"); 

       dialog.show(); 
       Button declineButton = (Button) dialog.findViewById(R.id.declineButton); 
       declineButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         dialog.dismiss(); 
         } 
        }); 
       } 
      } 
     } 

、共有設定でレスポンスのparamsを格納している、これは私のFacebookのログイン方法であり、同じ共有好み

lginbtn = (LoginButton) findViewById(R.id.tvfacebook); 


lginbtn.setReadPermissions("public_profile", "email"); 
//LoginManager.getInstance().logOut(); 
lginbtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
@Override 
public void onSuccess(LoginResult loginResult) { 
    if (AccessToken.getCurrentAccessToken() != null) { 
     Log.d("Accesstoken", AccessToken.getCurrentAccessToken().getToken()); 
     RequestData(AccessToken.getCurrentAccessToken()); 
     //i = new Intent(LoginActivity.this, MainActivity.class); 
     //startActivity(i); 
     } 
    } 

    @Override 
    public void onCancel() { 
     Toast.makeText(LoginActivity.this, "Login attempt Cancelled", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onError(FacebookException error) { 
    //infomation.setText("Login attempt failed."); 

    Toast.makeText(LoginActivity.this, "Login attempt failed", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     finish(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 

    public void RequestData(AccessToken accesstoken) { 
     GraphRequest request = GraphRequest.newMeRequest(accesstoken, new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject json, GraphResponse response) { 
       String firstname = ""; 
       String lastname = ""; 
       json = response.getJSONObject(); 
       try { 
        if (json != null) { 
         JSONObject jsonPhoto = null; 
         JSONObject jsonPhotoo = null; 
         Session session = null; 
//      String text = "<b>FirstName :</b> " + json.getString("first_name") + "<b>LastName :</b> " + json.getString("last_name") + "<br><br><b>Email :</b> " + json.getString("email") + "<br><br><b>Profile link :</b> " + json.getString("link"); 
         email = json.getString("email"); 
         name = json.getString("name"); 
         first_name = json.optString("first_name"); 
         last_name = json.optString("last_name"); 
         picture = json.getString("picture"); 

         JSONObject jsonPhoto1 = json.getJSONObject("picture"); 
         if (jsonPhoto1.has("data")) { 
          jsonPhoto = jsonPhoto1.getJSONObject("data"); 
          url = jsonPhoto.getString("url"); 
         } 

         new fblogintask().execute(url); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,first_name,last_name,email,picture"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 

    class fblogintask extends AsyncTask<String, String, String> 

    { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected void onPostExecute(String aVoid) { 
      super.onPostExecute(aVoid); 
      if (serverresponse.equals("Success")) { 
       Intent i = new Intent(LoginActivity.this, MainActivity.class); 
       SharedPreferences.Editor editor = getSharedPreferences(AppConstants.VERIFICATION, MODE_PRIVATE).edit(); 
       editor.putString(AppConstants.LOGGEDIN, "1"); 
       editor.putString(AppConstants.CUSTOMERID, customerid); 
       editor.putString(AppConstants.CUSTOMERNAME, customername); 
       editor.putString(AppConstants.CUSTOMERMOBILENUMBER, mobilenumber); 
       editor.putString(AppConstants.CUSTOMEREMAIL,emailaddress); 
       startActivity(i); 
      } else 
      { 
      } 
     } 

     @Override 
     protected String doInBackground(String... voids) { 
      JSONObject jsonObject; 
      try { 
       response = FbLoginPostHit.getJSONfromURL(first_name, last_name, email, voids[0]); 
       JSONObject _jobject = new JSONObject(response.toString()); 
       customerid = _jobject.getString("CustomerID"); 
       serverresponse = _jobject.getString("Result"); 
       emailaddress=_jobject.getString("EmailAddress"); 
       customername = _jobject.getString("CustomerName"); 
       mobilenumber = _jobject.getString("MobileNumber"); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

今の問題は、私は2番目の活動で共有 県から値を取得していたときに最初のケースでは、それが値を渡しているが、私は2番目にシュレッドプリファレンスから値を取得していたときにということですそれはnullを与えるケース..私が望むユーザーがfbでログインするのか、単純なログインでログインするのかです。私は次のアクティビティで必要なパラメータを取得します。誰かが私にその方法を教えてください

+0

これは、どのように私はanoherアクティビティで値を取得するのですか?customername = prefs.getString(AppConstants.CUSTOMERNAME、 ""); – neha

+0

応答にはキーと値があることを確認しましたか?応答に「CustomerID」タグがあるかどうか – Rahul

+0

はい顧客ID、名前などがあります – neha

答えて

2

あなたのFbLoginTaskでは、共有環境設定の更新をコミットするのを忘れました。 Docsによると、共有設定の値は、共有設定で適用またはコミットを呼び出すまで保存されません。

AsyncTaskのpostExecuteでは、アクティビティを開始する前に、あなたの設定値をコミットします。

+0

ああ、ありがとうございました... – neha

+0

小さな提案、大文字でクラス名を開始 – Rahul

+0

okありがとう、私はそれを逃した – neha

関連する問題