Je veux stocker un objet ProtoBuf
dans SharedPreferences
. Protocol Buffers
autorise uniquement l'analyse à partir de ByteString
ou Byte Array
. Mais SharedPreferences
ne supportent ni l'un ni l'autre. Je me demandais s'il y avait un moyen de le faire sans avoir à créer un autre modèle sérialisable et à le mapper en premier.Enregistrer l'objet ProtoBuf dans SharedPreferences
moi avons essayé de cette façon, mais je reçois InvalidProtocolBufferException
:
public static void setProtoData(ProtoData data) {
Prefs.putString(Constants.SHARED_PREF_PROTO_DATA, String.valueOf(data.toByteString()));
}
public static ProtoData getProtoData() {
String str = Prefs.getString(Constants.SHARED_PREF_PROTO_DATA, null);
ProtoData data = null;
try {
data = ProtoData.parseFrom(ByteString.copyFromUtf8(str));
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
return data;
}