当我的服务器知道它是跨应用程序的同一用户时,我有几个应用程序可以提供最佳用户体验。要验证用户是谁,每个用户都有一个user_token字符串,在加载应用程序时会发送到我的服务器。
我正在尝试找出跨应用程序共享此字符串的最佳方式。看起来Content Provider是在应用程序之间共享数据的最佳方式,但SQLite数据库对于存储/检索字符串似乎有点过分。
我在Android-Dev IRC上问了同样的问题,我建议我使用SharedPreferences - 但是在查看其他一些SO帖子时,不建议这样做。
最好的方法是什么?如果它是内容提供者,任何想法我应该使用什么样的数据结构来存储字符串?
提前致谢!
答案 0 :(得分:6)
如果您的应用未共享流程,则SharedPreference
不是一个好主意。它不是多过程安全的。为此目的构建了ContentProviders
:在应用之间共享数据。您可以使用ContentProvider
创建自己的SharedPreference
来存储数据,而不必使用SQLite。 ContentProvider
API非常适合SQL类型实现,但不是必需的。
答案 1 :(得分:0)
以下是内容提供程序中的onCreate方法(将共享首选项公开给两个应用程序):
@Override
public synchronized boolean onCreate() {
// TODO Auto-generated method stub
SharedPreferences sp = getContext().getSharedPreferences(
"SurveyMeSharedPreferences", getContext().MODE_PRIVATE);
String apiKey = sp.getString("user_auth_token", null);
if (apiKey == null) {
SharedPreferences.Editor editor = sp.edit();
try {
apiKey = SurveyMe.checkUser();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
editor.putString("user_auth_token", apiKey);
editor.commit();
}
return false;
}