我正在开发一个应用程序,我在SharedPreferences中保留布尔标志以检查当前会话是否处于活动状态。基于此标志,用户可以在显示启动画面后导航到主屏幕或登录屏幕。
这项工作正常但我们的一位客户报告说他的应用程序即使在卸载并重新安装他的应用程序后也会让用户登录。
他遵循的步骤
我认为当我们卸载应用程序时,它的数据会被清除(包括共享偏好设置),而且其他设备(如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)
您能否为此建议此行为的可能根本原因和解决方案?
答案 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