Existe-t-il un décodeur et un encodeur base-64 pour une chaîne sous Android?
Voir Android.util.Base64
Il semble que cela ait été ajouté dans l'API version 8 ou Android 2.2 donc il ne sera pas disponible sur les anciennes plates-formes.
Mais sa source est à Android/util/Base64.Java
donc si nécessaire, il suffit de le copier tel quel pour les anciennes versions.
Voici un exemple d'utilisation du Base64
classe pour encoder et décoder une simple valeur de chaîne.
// 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();
}
Cet extrait peut être inclus dans une activité Android.
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;
}
}
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;
}
}
String text = "example007";
Log.e("encoded", encodeString(text)); //Output: ZXhhbXBsZTAwNw==
Log.e("decoded", decodeString(encodeString(text))); //Output: example007
Voici une méthode simple que j'allais utiliser jusqu'à ce que je réalise que cela n'est pris en charge que dans 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);
}
Si vous ne pas voulez un saut de ligne à la fin de la chaîne, changez les indicateurs de Base64.DEFAULT
à Base64.NO_WRAP
Base64.encodeToString("yourString".getBytes("UTF-8"), Base64.NO_WRAP);
décodage base64 cela peut nous aider tous.