Is there a base-64 decoder and encoder for a String in Android?
It seems that this was added in API version 8 or android 2.2 so it will not be available on the older platforms.
But the source of it is at android/util/Base64.java
so if needed one could just copy it unchanged for older versions.
Mw==\n
. –
Earnestineearnings This is an example of how to use the Base64
class to encode and decode a simple String value.
// 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();
}
This excerpt can be included in an Android activity.
Base64.DEFAULT
will insert a line break in my case. I use Base64.NO_WRAP
instead. –
Wallaby It seems that this was added in API version 8 or android 2.2 so it will not be available on the older platforms.
But the source of it is at android/util/Base64.java
so if needed one could just copy it unchanged for older versions.
Mw==\n
. –
Earnestineearnings Here is a simple method I was going to use until I realized that this is only supported in Android API 8+:
// Has line break
public String getBase64(String input) {
return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}
// No line break
public String getBase64(String input) {
return Base64.encodeToString(input.getBytes(), Base64.NO_WRAP);
}
To encode:
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;
}
}
To decode:
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;
}
}
Example
String text = "example007";
Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
Log.e("decoded", decodeString(encodeString(text))); //Output: example007
If you don't want a line break at the end of the String, change the flags from Base64.DEFAULT
to Base64.NO_WRAP
Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
Kotlin supports Base64 for versions 1.8.20 and over. It has 3 types available which are Base64.Default, Base64.UrlSafe and Base64.Mime.
// Base64.Default
val nameBytes = "Nav".map { it.code.toByte() }.toByteArray()
val encodedValue = Base64.Default.encode(nameBytes)
// Encode value: TmF2
println("Encoded: $encodedValue")
// Decoded value: Nav
println("Decoded: ${String(Base64.Default.decode(encodedValue))}")
// Base64.UrlSafe
val googleIOUrlBytes = "google.io".map { it.code.toByte() }.toByteArray()
// Encode value: Z29vZ2xlLmlv
val encodedURLSafe = Base64.UrlSafe.encode(googleIOUrlBytes)
println("Encoded UrlSafe: $encodedURLSafe")
// Decoded value: google.io
println("Decoded UrlSafe: ${String(Base64.UrlSafe.decode(encodedURLSafe))}")
© 2022 - 2024 — McMap. All rights reserved.