【问题标题】:Android app cant read sharedPreference file in some phonesAndroid 应用程序无法读取某些手机中的共享首选项文件
【发布时间】:2016-07-04 18:03:29
【问题描述】:

我正在为客户构建一个应用程序,除了一件事之外,一切似乎都运行良好。我正在将用户名和密码等内容写入 sharedPreference 文件。当我在使用 android 版本(如 jellybean、kitkat 甚至棒棒糖)的设备上运行该应用程序时,它的工作原理就像魅力一样,但是当我尝试在三星 s5、asus zenfone 5.0 上运行它时,它不会读取任何用户名或密码。请任何形式的帮助将不胜感激。提前致谢。

保存我的数据的代码:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("UserId",userId);
editor.putString("Username",getUsername);
editor.putString("Password",getPassword);
editor.putString("Firstname",getFirstname);
editor.putString("Lastname", getLastname);
boolean edited = editor.commit();

读取数据的代码

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
username = sharedPref.getString("Username", "username");
firstname = sharedPref.getString("Firstname", "firstname");
lastname = sharedPref.getString("Lastname", "lastname");`

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    更改 SharePreference 的路径,再试一次

    try {
            Field field =ContextWrapper.class.getDeclaredField("mBase");
            field.setAccessible(true);
            Object obj = field.get(this);
            field = obj.getClass().getDeclaredField("mPreferencesDir");
            field.setAccessible(true);       
            File file = new File("YOUR PATH");
            field.set(obj, file);
    
            // use edit to save data
            //…………
    
        } catch (Exception e) { 
            e.printStackTrace();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2020-09-20
      • 2019-12-07
      • 1970-01-01
      相关资源
      最近更新 更多