0

我已經創建了登錄應用程序,這是我原生應用程序構建過程的一部分。有幾個端點使用登錄會話。我獲得登錄終結點的成功結果,但它不會將其會話轉發到下一個活動。例如:如果用戶登錄成功,他可以在其他活動中訪問其他功能。但是,當我試圖切換活動時,我得到「用戶需要登錄」。如何在客戶端更改活動時創建自動處理的http連接

MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     jsonResponse = new LoginPOJO(); 

     // UserLogin Field 
     etUserName = (EditText) findViewById(R.id.etUserName); 
     // UserLogin Password 
     etPassword = (EditText) findViewById(R.id.etPassword); 
     // Login Button Image 
     btnLogin = (ImageView) findViewById(R.id.btnLogin); 
     btnLogin.setOnClickListener(this); 
     // User SignUp Button Image 
     ImageView btnSignUp = (ImageView) findViewById(R.id.btnSignUp); 
     btnSignUp.setOnClickListener(this); 
     // Forget Password Textbutton 
     TextView frgtPassword = (TextView) findViewById(R.id.forgetpassword); 
     frgtPassword.setOnClickListener(this); 
     // Skip for now button 
     final TextView skipfornow = (TextView) findViewById(R.id.skipnow); 
     skipfornow.setOnClickListener(this); 

     } 
private void logIn(final String username, final String password) { 
     final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setMessage("Logging you in..."); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     String UPLOAD_URL = "http://xxxxx-dev.elasticbeanstalk.com/api/v1/login"; 
     final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String s) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         // Getting the final Json Object 
         JSONObject parentObject; 
         try { 
          parentObject = new JSONObject(s); 

          LoginPOJO.setCode(parentObject.getString("code")); 

          // Getting the data from Data Json Object 
          JSONObject dataObject = parentObject.getJSONObject("data"); 

          // Getting data from Geo object 
          JSONObject geoObject = dataObject.getJSONObject("geo"); 

          // Getting data from businesses Array 
          JSONArray businessesArray = dataObject.getJSONArray("businesses"); 

          // Getting data from Meta Object 
          JSONObject metaObject = parentObject.getJSONObject("meta"); 

          startActivity(new Intent(MainActivity.this, PromotionsFeedActivity.class)); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         //Showing toast message of the response 
         Log.i("TAG", "onResponse: " + s); 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError volleyError) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         //Showing snackbar 
         Toast.makeText(MainActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       //Converting Bitmap to String 
       //Creating parameters 
       Map<String, String> params = new Hashtable<>(); 
       params.put("apikey", Utilities.API_KEY); 
       params.put("secret", Utilities.SECRET_KEY); 
       params.put("email", username); 
       params.put("password",password); 
       //Adding parameters 
       //returning parameters 
       return params; 
      } 
     }; 
     //Creating a Request Queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     //Adding request to the queue 
     requestQueue.add(stringRequest); 
    } 

feed.java

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_promotions_feed); 

     jsonResponse = new LoginPOJO(); 

     communityImage = (TextView) findViewById(R.id.communityImage); 

     communityImage.setOnClickListener((View.OnClickListener) this); 

     searchImage = (TextView) findViewById(R.id.searchImage); 

     searchImage.setOnClickListener((View.OnClickListener) this); 

     specialsImage = (TextView) findViewById(R.id.searchImage); 

     specialsImage.setOnClickListener(this); 

     calenderImage = (TextView) findViewById(R.id.calenderImage); 

     calenderImage.setOnClickListener(this); 

     profileImage = (TextView) findViewById(R.id.profileImage); 

     profileImage.setOnClickListener(this); 

     TextView response = (TextView) findViewById(R.id.response); 

     String data = LoginPOJO.getCode(); 

     response.setText(data); 

    } 
private void getPromotionsFeed(final String location) { 

     final ProgressDialog progressDialog = new ProgressDialog(PromotionsFeedActivity.this); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setMessage("Getting promotions feed..."); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     String UPLOAD_URL = "http://xxxx-dev.elasticbeanstalk.com/api/v1/get_promotions_feed"; 
     final StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String s) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         // Getting the final Json Object 
         JSONObject parentObject; 
         try { 
          parentObject = new JSONObject(s); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         //Showing toast message of the response 
         Log.i("TAG", "onResponse: " + s); 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError volleyError) { 
         //Dismissing the progress dialog 
         progressDialog.dismiss(); 
         //Showing snackbar 
         Toast.makeText(PromotionsFeedActivity.this, "Connection Problem", Toast.LENGTH_SHORT).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       //Converting Bitmap to String 
       //Creating parameters 
       Map<String, String> params = new Hashtable<>(); 
       params.put("apikey", Utilities.API_KEY); 
       params.put("secret", Utilities.SECRET_KEY); 
       params.put("location","xxx"); 
       //Adding parameters 
       //returning parameters 
       return params; 
      } 
     }; 
     //Creating a Request Queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     //Adding request to the queue 
     requestQueue.add(stringRequest); 
    } 

logcat的

04-03 18:47:26.263 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":200,"status":"ok","message":"Logged in.","data":{"id":"Pg4yYHXIQK","firstName":"Arun","lastName":"","shortName":"Arun","email":"[email protected]","role":"owner","showInviteMessage":false,"verified":true,"zipCode":"07666","location":"Teaneck, NJ","geo":{"latitude":40.888461,"longitude":-74.012066,"zipcode":"07666","city":"Teaneck","state":"NJ","type":"geo"},"defaultCommunity":{"id":18313,"name":"Teaneck, NJ Community","city":"Teaneck","state":"NJ","latitude":40.888461,"longitude":-74.012066,"type":"community"},"businesses":[{"id":72,"name":"my bus","type":"business"}],"type":"user"},"meta":{"userVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","businessVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-business.m4v","promoVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","searchVideoUrl":"https://d1e6yi6s3cx2ur.cloudfront.net/videos/0/_20160316_ios-user.m4v","faqUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/faq","privacyUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/privacy","termsUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/terms","contactFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/contact?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","feedbackFormUrl":"http://farbinder-dev.elasticbeanstalk.com/api/v1/feedback?u\u003d25fee27e9d18464eadbad0faa632a9b6e82787cc613ca64e","type":"links"}} 
04-03 18:47:26.265 1518-1877/system_process W/InputMethodManagerService: Window already focused, ignoring focus gain of: [email protected] attribute=null, token = [email protected] 
04-03 18:47:26.326 1518-1660/system_process V/WindowManager: Adding window Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 10 (after Window{27eec5b0 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.MainActivity EXITING}) 
04-03 18:47:26.330 1518-1880/system_process V/WindowManager: Adding window Window{1217747 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity} at 4 of 11 (before Window{11f00761 u0 com.example.reception.farbinder_test/com.example.reception.farbinder_test.PromotionsFeedActivity}) 
04-03 18:47:26.441 10750-10750/com.example.reception.farbinder_test E/RecyclerView: No adapter attached; skipping layout 
04-03 18:47:26.457 1162-1162/? W/SurfaceFlinger: couldn't log to binary event log: overflow. 
04-03 18:47:27.092 10750-10750/com.example.reception.farbinder_test I/TAG: onResponse: {"code":401,"status":"error","message":"User not logged in."} 

回答

0

你做你的登錄界面,在一項服務,然後讓該服務向任何感興趣的課程廣播成功登錄。

+0

所以根據你我必須解析成功登錄感興趣的課程權利。但是端點的其餘部分不會將這些憑據作爲參數。我怎麼能夠把這個成功的消息發送給感興趣的班級呢?請你用一些示例代碼來解釋。 @Gabe Sechan – Arun

+0

調查BroadcastReceivers。或者一個活動巴士。或者RxJava可觀察的。或者只是一個帶有自己的回調系統的綁定服務。有幾十種方式來提醒服務的活動,做一些研究。 –

+0

Ohh好的..謝謝@Gabe Sechan – Arun

相關問題