【问题标题】:Android Kivy JsonStore data.json does not persist across upgradesAndroid Kivy JsonStore data.json 不会在升级过程中持续存在
【发布时间】:2020-05-12 06:35:07
【问题描述】:

我正在将 JsonStore 与 Kivy 应用程序一起使用

from kivy.storage.jsonstore import JsonStore
stored_data = JsonStore('data.json')

在我的 PC 上,即使我重新构建程序,商店也会保留。

在我的 Android 手机上,重新加载相同的 apk 文件会保留数据,但对程序(和重建)的任何更改似乎都会擦除存储的数据。

我做错了什么,如何通过升级保留数据?

【问题讨论】:

    标签: android json kivy store


    【解决方案1】:

    这是因为您将文件写入应用所在的文件夹。您应该将它们写入 /sdcard 并授予写入权限:

    from jnius import autoclass
    from android.permissions import request_permissions, Permission
    ...
    # request a permission from user
    request_permissions([Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE])
    ...
    # path to sdcard (external storage that user have access to)
    Environment = autoclass('android.os.Environment')
    sdpath = Environment.getExternalStorageDirectory().getAbsolutePath()
    

    所以,在那之后你可以在那里创建你的文件夹,比如:

    if not os.path.exists(sdpath + '/yourappname'):
        os.makedirs(sdpath + '/yourappname')
    

    并将您的文件保存在那里,在重新安装应用程序时不会再删除它们。

    附:不要忘记将 pyjnius 添加到 buildozer 规范文件中的需求中!

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2012-01-10
      • 2018-01-19
      • 2016-08-06
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多