Android 在SharedReferences中存储ProtoBuf对象
我想在Android 在SharedReferences中存储ProtoBuf对象,android,sharedpreferences,protocol-buffers,Android,Sharedpreferences,Protocol Buffers,我想在SharedReferences中存储ProtoBuf对象协议缓冲区仅允许从ByteString或字节数组进行解析。但是SharedReferences两者都不支持。我想知道是否有一种方法可以做到这一点,而不必先创建另一个可序列化模型并映射到它 我尝试过这种方法,但我得到了无效的ProtocolBufferException: public static void setProtoData(ProtoData data) { Prefs.putString(Constants.SH
SharedReferences
中存储ProtoBuf
对象<代码>协议缓冲区仅允许从ByteString
或字节数组
进行解析。但是SharedReferences
两者都不支持。我想知道是否有一种方法可以做到这一点,而不必先创建另一个可序列化模型并映射到它
我尝试过这种方法,但我得到了无效的ProtocolBufferException:
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;
}
您可以使用android.util.Base64在SharedReferences中保存字节数组 保存:
String saveThis = Base64.encodeToString(array, Base64.DEFAULT);
装载:
byte[] array = Base64.decode(stringFromSharedPrefs, Base64.DEFAULT);