我开发了基于 Sip 的应用程序,用于拨打和接听电话。此应用程序还包括聊天功能。
我的应用程序在三星 Galaxy y 和索尼爱立信的 ICS 版本上运行良好。但是在三星 Galaxy S2 上使用该应用程序时,用户未注册。它在Asterisk上给了我错误的密码错误。
这意味着它无法从 sharedpreferences 中获取值,或者它不会将值存储在设备上。
是的,这是一个巨大的痛苦,但据我所知,你不能在三星 Galaxy S1/S2 手机上使用 SharedPreferences。没有解释 :( 巨大的痛苦 创建 SharedPreferences 时出错 - 无法为 SharedPreferences 文件创建目录
不知道看起来确实可以节省的应用程序如何绕过它-也许他们使用数据库。
我是如何做到的: 创作:
Editor editor = getSharedPreferences(Constants.SaveDataName, MODE_PRIVATE).edit();
editor.putString(Constants.SaveDataName, xmlString);
editor.commit();
加载:
getSharedPreferences(Constants.SaveDataName, MODE_PRIVATE).getString(Constants.SaveDataName, "");
如果相关:这是在服务中。
@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));