我可以在 android 中使用 skydrive API 登录到 skydrive。现在我想在另一个活动中使用相同的会话对象和 liveconnectclient 对象。我怎样才能做到这一点?
public void onAuthComplete(LiveStatus status, LiveConnectSession session,Object userState)
{
if (status == LiveStatus.CONNECTED)
{
client = new LiveConnectClient(session);
Log.i("message", client.toString());
// StoreSkydriveSession(session);
txtskydrive.setText("Connected");
skydrivefolder.setEnabled(true);
isSkydriveConnected=true;
}
else
{
txtskydrive.setText("Not Connected");
Toast.makeText(getApplicationContext(), "Not Signed In",
Toast.LENGTH_LONG).show();
// this.resultTextView.setText("Not signed in.");
client = null;
}
}
我能够登录。现在我应该如何以及在哪里存储客户端和会话对象,以便我可以在其他活动中使用它。
我曾尝试使用 bean 来设置和获取值,但是当我尝试获取它时,它会引发空指针异常。
我尝试将其存储在共享首选项中,但我无法将其从字符串转换为 LiveConnectClient 对象。
谢谢 :)
编辑:
我认为我们可以使用 GSON ... Gson(也称为 Google Gson)是一个开源 Java 库,用于将 Java 对象序列化和反序列化到(和从)JSON
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
For save
Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(client); //LiveConnectClient Object
prefsEditor.putString("MyObject", json);
prefsEditor.commit();
For get
Gson gson = new Gson();
String json = mPrefs.getString("MyObject", "");
LiveConnectClient obj = gson.fromJson(json, MyObject.class);
我认为这应该工作....