Codificador y decodificador Base64

¿Hay un decodificador y codificador de base 64 para una cadena en Android?

Ver android.util.Base64

Parece que esto se agregó en API versión 8 o Android 2.2, por lo que no estará disponible en las plataformas anteriores.

Pero la fuente está en android/util/Base64.java así que si es necesario uno podría simplemente copiarlo sin cambios para versiones anteriores.

Este es un ejemplo de cómo usar la clase Base64 para codificar y decodificar un valor de cadena simple.

 // String to be encoded with Base64 String text = "Test"; // Sending side byte[] data = null; try { data = text.getBytes("UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } String base64 = Base64.encodeToString(data, Base64.DEFAULT); // Receiving side byte[] data1 = Base64.decode(base64, Base64.DEFAULT); String text1 = null; try { text1 = new String(data1, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } 

Este extracto se puede incluir en una actividad de Android.

Para codificar:

 private String encodeString(String s) { byte[] data = new byte[0]; try { data = s.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } finally { String base64Encoded = Base64.encodeToString(data, Base64.DEFAULT); return base64Encoded; } } 

Para decodificar:

 private String decodeString(String encoded) { byte[] dataDec = Base64.decode(encoded, Base64.DEFAULT); String decodedString = ""; try { decodedString = new String(dataDec, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } finally { return decodedString; } } 

Ejemplo

  String text = "example007"; Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw== Log.e("decoded", decodeString(encodeString(text))); //Output: example007 

Este es un método simple que iba a usar hasta que me di cuenta de que esto solo es compatible con Android API 8+ :

 // Has line break public String getBase64(final String input) { return Base64.encodeToString(input.getBytes(), Base64.DEFAULT); } // No line break public String getBase64(final String input) { return Base64.encodeToString(input.getBytes(), Base64.NO_WRAP); } 

Si no desea un salto de línea al final de la cadena, cambie los indicadores de Base64.DEFAULT a Base64.NO_WRAP

 Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP); 

deencoding base64 esto puede ayudarnos a todos.