应用程序在三星S9中卸载应用程序后,SharedPreferences不明确

时间:2018-03-28 06:35:44

标签: android kotlin sharedpreferences

我正在开发一个应用程序,我在SharedPreferences中保留布尔标志以检查当前会话是否处于活动状态。基于此标志,用户可以在显示启动画面后导航到主屏幕或登录屏幕。

这项工作正常但我们的一位客户报告说他的应用程序即使在卸载并重新安装他的应用程序后也会让用户登录。

他遵循的步骤

  • 安装应用
  • 使用有效凭据登录
  • 从设置中卸载应用
  • 使用我提供的apk重新安装应用
  • 打开应用

我认为当我们卸载应用程序时,它的数据会被清除(包括共享偏好设置),而且其他设备(如Pixel 2,OnePlus 3)具有相同的Android OS 8.0。

这就是我处理导航的方式。这里的SessionManager是singleton(Kotlin中的对象),它存储了isSessionActive标志。应用程序启动时,isSessionActive标志从SharedPreferences获取其值

val intent: Intent = if (SessionManager.isSessionActive) {
      Intent(this, MainActivity::class.java)
} else {
      Intent(this, LoginActivity::class.java)
}
startActivity(intent)

您能否为此建议此行为的可能根本原因和解决方案?

2 个答案:

答案 0 :(得分:0)

清除您的应用数据。添加以下内容

         try {  // clearing app data
        Runtime runtime = Runtime.getRuntime();
        runtime.exec("pm clear your package name");
       //e.g "pm com.example.test"
    } catch (Exception e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

可能由于android:allowBackup=false

检查SharedPreferences are not being cleared when I uninstall