三星Galaxy S2的共享偏好问题(4.0.3)

时间:2012-06-01 10:02:49

标签: android

我开发了基于Sip的应用程序,用于拨打和接听电话。聊天功能也包含在此应用程序中。

我的应用程序在三星Galaxy y和索尼爱立信的ICS版本上运行良好。但在使用Samsung Galaxy S2上的应用程序时,用户未注册。我在Asterisk上错误地输入密码错误。

这意味着它无法从共享偏好中获取值,或者它不会将值存储在设备上。

2 个答案:

答案 0 :(得分:2)

是的,这是一个巨大的痛苦,但据我所知,你不能在三星Galaxy S1 / S2手机上使用SharedPreferences。没有解释:(巨大的痛苦 Error creating SharedPreferences - couldn't create directory for SharedPreferences file

不知道看起来像保存的应用程序如何绕过它 - 也许他们使用数据库。

我是怎么做到的: 创建:

Editor editor = getSharedPreferences(Constants.SaveDataName, MODE_PRIVATE).edit();

editor.putString(Constants.SaveDataName, xmlString);
editor.commit();

装载:

getSharedPreferences(Constants.SaveDataName, MODE_PRIVATE).getString(Constants.SaveDataName, "");

如果相关:这是在服务中。

答案 1 :(得分:0)

@juned,现在我看代码我觉得没什么特别的。无论如何,这里有一些与sharedPref有关的代码部分。

设置SharedPref

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    final SharedPreferences.Editor editor = preferences.edit();
    editor.putFloat("longitude", (float)location.getLongitude());
    editor.putFloat("latitude", (float)location.getLatitude());
    editor.commit();

并抓取

    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    GeoPoint userLocationPoint = new GeoPoint((int) (sharedPreferences.getFloat("latitude", (float) 0.0) * 1E6),
            (int) (sharedPreferences.getFloat("longitude", (float) 0.0) * 1E6));