2016-10-13 37 views
0

在我的應用程序,我有一個登錄過程中,一旦你登錄,應用程序向服務器調用獲取特定數據:失敗的登錄,但僅在三星

Call<JsonObject> peticion= RetrofitClient.getRetrofitClient(InicioSesionGibActivity.this).login(imei, idCliente, user, encriptedPass); 
peticion.enqueue(new Callback<JsonObject>() { 
@Override 
public void onResponse(final Response<JsonObject> response, Retrofit retrofit) { 

     String respoString=response.body().toString(); 
    if(response.isSuccess()){ 

     settings.edit().putBoolean("logueado", true).apply(); 

     Call<JsonPrimitive> peticion= RetrofitClient.getRetrofitClient(InicioSesionGibActivity.this).obtenerCodOrg(settings.getString("imei", ""), settings.getString("idCliente", "")); 
     peticion.enqueue(new Callback<JsonPrimitive>() { 
      @Override 
      public void onResponse(Response<JsonPrimitive> response2, Retrofit retrofit) { 
       if (response2.isSuccess()) { 
        codOrg = response2.body().getAsLong(); 
        settings.edit().putLong("codorg", codOrg).apply(); 
        dropTables(); 
        obtenerEntidades(); 
       }else{ 
        //The execution gets here 
        Message msg=new Message(); 
        msg.what=1; 
        loginHandler.sendMessage(msg); 
        AlertDialog.Builder aDialog=new AlertDialog.Builder(InicioSesionGibActivity.this); 
        aDialog.setTitle(getString(R.string.error)); 
        aDialog.setMessage(getString(R.string.unknownerror)); 
        aDialog.setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }); 
        aDialog.show(); 
       } 
      } 

      @Override 
      public void onFailure(Throwable t) { 

       settings.edit().putBoolean("logueado", false).apply(); 
       Message msg=new Message(); 
       msg.what=1; 
       loginHandler.sendMessage(msg); 
       AlertDialog.Builder aDialog=new AlertDialog.Builder(InicioSesionGibActivity.this); 
       aDialog.setTitle(getString(R.string.error)); 
       aDialog.setMessage(getString(R.string.neterror)); 
       aDialog.setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }); 
       aDialog.show(); 

      } 
     }); 

    }else{ 

     final AlertDialog.Builder builder=new AlertDialog.Builder(InicioSesionGibActivity.this); 
     builder.setTitle(getString(R.string.error)); 
     builder.setMessage(getString(R.string.loginerror)); 
     builder.setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
       Message msg=new Message(); 
       msg.what=1; 
       loginHandler.sendMessage(msg); 
       editTextUsuario.setText(""); 
       editTextPassword.setText(""); 

      } 
     }); 
     builder.create().show(); 
    } 

} 

@Override 
public void onFailure(Throwable t) { 
    Message msg=new Message(); 
    msg.what=1; 
    loginHandler.sendMessage(msg); 
    final AlertDialog.Builder builder=new AlertDialog.Builder(InicioSesionGibActivity.this); 
    builder.setTitle(getString(R.string.error)); 
    builder.setMessage(getString(R.string.loginerror)); 
    builder.setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 

    }); 
    builder.create().show(); 


} 
}); 

執行在所有設備上都可以...除了我的老闆電話,三星S7(不是那種爆炸的)。如果他從APK執行它,會發生這種情況。但是,這是一個奇怪的部分,如果我拿到手機,並從Android Studio運行應用程序,那麼執行過程會很順利,而且我的數據也很好。

這使我瘋狂,因爲它很難調試。

有人遇到過這個問題嗎?

如果您需要更多數據或澄清,請詢問。

謝謝。

+0

當您從AS運行它時,您是在運行調試還是發佈版本? –

+0

他們兩個都運行在調試模式下,在發佈模式下工作正常。 – Fustigador

回答

0

可能是因爲它是一部快速手機。當您將數據保存到共享首選項時,您是否立即讀取它?您正在使用apply()函數將它存儲在異步後臺線程中,如果您嘗試立即讀取它,可能不會立即出現。

您可能需要使用commit(),它會將數據立即寫入當前線程的持久性存儲中,並且在提交之前不會繼續執行。

+0

不,該數據存儲爲稍後使用,而不是立即使用。 – Fustigador

+0

你弄明白了嗎? – Veener

+0

不幸的是,由於它只發生在單個設備中,我們暫時擱置,而我在應用程序中開發其他東西。我會更新,如果一旦到了,我會設法解決它 – Fustigador