Cómo resolver StringIndexOutOfBoundsException en android

Este es mi informe logcat:

java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2 at java.lang.String.startEndAndLength(String.java:583) at java.lang.String.substring(String.java:1464) at com.buzzador.profile.getValidPhoneNumber(profile.java:1966) at com.buzzador.profile.setDataForServer(profile.java:1717) at com.buzzador.profile$5.onClick(profile.java:236) at android.view.View.performClick(View.java:4377) at android.view.View$PerformClick.run(View.java:18044) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5306) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method) 

Y creo que el problema está en esta función:

 public String getValidPhoneNumber (String phoneNumber, String country) { String csValidPhoneNumber = ""; phoneNumber = getPhoneNumberWithoutReqularExpresions(phoneNumber); phoneNumber = phoneNumber.replaceFirst ("^0*", ""); String csCountryCode = getCountryCode(country); String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()); if(csAppendedCode.equals(csCountryCode)) { csValidPhoneNumber = "+" + phoneNumber; return csValidPhoneNumber; } csValidPhoneNumber = "+" + csCountryCode + phoneNumber; return csValidPhoneNumber; } 

¿Está seguro de que phoneNumber no es igual a "" ? Usted tiene que comprobar que phoneNumber tiene más caracteres que el csCountryCode.length() .

 String csAppendedCode = phoneNumber.length() > csCountryCode.length() ? phoneNumber.substring(0, csCountryCode.length()) : ""; 

El último índice de una String es string.length()-1 pero está intentando acceder al índice con string.length() que no existe, por eso está recibiendo esta excepción …

 java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2 

Ahora, debe cambiar esta línea …

 String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()); 

a esto…

 String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()-1); 
  • Android studio: las expresiones lambda no son compatibles en -source 1.7 (use -source 8 o superior para permitir expresiones lambda)
  • Spring MVC, Thymeleaf y REST
  • Acceso / sdcard en Android 4.2
  • Recuperación de datos específicos de FireBase (Android)
  • Animación de diapositivas y diapositivas para un diseño
  • Cómo obtener correo electrónico de usuario en GraphRequest.newMeRequest
  • Archivos de expansión Apk - Licencias de aplicaciones - Cuenta de desarrollador - respuesta NOT_LICENSED
  • ¿Cómo determinar en qué plataforma se ejecuta la aplicación actual en LibGDX?
  • Android - Establecer dinámicamente el gradiente de drawable
  • Obtener fragmento en el diseño del fragmento android
  • Android simulacro de ubicación sin configuración de ubicación falsa (dispositivo con raíz)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.