当前位置: 首页 > 知识库问答 >
问题:

在Samsung S9中卸载应用程序后,共享的首选项未被清除

易流觞
2023-03-14

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

这运行良好,但我们的一位客户报告说,即使在卸载和重新安装他的应用程序后,他的应用程序仍会让他的用户登录。

他跟随的步骤

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

我认为当我们卸载应用程序时,其数据会被清除(包括共享首选项),并且这在其他设备(如Pixel 2,OnePlus 3)中运行良好,这些设备具有相同的Android OS 8.0。

这就是我处理导航的方式。这里SessionManager是单例(静态编程语言中的对象),它存储isSessionActive标志。isSessionActive标志在应用程序启动时从SharedPretions获取其值

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

你能提出这种行为的可能根源和解决办法吗?

共有2个答案

墨雨华
2023-03-14

清除应用程序数据。添加以下内容

         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();
    }
王旺
2023-03-14

可能是由于Android:允许备份=假

检查卸载时共享首选项未被清除

 类似资料:
  • 当我发送FCM消息且应用程序处于后台时,我想清除共享首选项。在方法中,我正在调用一个方法来清除它们。 我得到以下错误: 未处理的异常:MissingPluginException(在channel plugins.flatter.io/shared_首选项上找不到方法getAll的实现)

  • 我在我制作的闪屏页面中调用共享首选项 这是我的方法 顺便说一下,我不知道这一行是什么//??这是我的日志 正在执行热重启。。。正在将文件同步到为x86构建的Android SDK设备。。。1776ms内重新启动应用程序。I/flatter(8982):loadingScreen=true E/flatter(8982):[ERROR:flatter/lib/ui/ui\u dart\u state

  • 我试图在用户更新应用程序时注销他们。对于设置allowBackup=false,它会在应用程序更新时清除共享首选项吗? 提前谢谢你。

  • 我不知道该怎么办了 似乎在android 3.0及更高版本上工作得很好,但在android 2.3.3上,每次我启动应用程序时,它都会再次询问用户名/密码。 我正在使用共享偏好设置。 以下是我保存首选项的方式: 我是这样读的: 我还尝试使用以下代码保存首选项: 然后用这段代码读出来: 但这也不管用。 问题是在我重新启动应用程序之前,我可以看到它们仍然存在。然而,只要我重新启动,我就会得到用户名为“

  • 我正在创建一个番茄工作计时器应用程序。它有2项活动: 主要活动是设置时间 我已经创建了一个对象,它保存了设置的时间,我希望这些时间显示在Recents活动中的按钮中。但是,似乎没有保存数据,而是显示了包名称。

  • 对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?