【问题标题】:APK made by buildozer not making CSV file on android mobilebuildozer制作的APK没有在Android手机上制作CSV文件
【发布时间】:2021-03-03 09:56:07
【问题描述】:

我在 KivyApp 的帮助下制作了一个 APK。 APK 生成成功,我的 APK 也在我的手机上运行。问题是我没有为 CSV 文件提供任何特定路径,该文件存储了应用程序生成的输出。最初,我在 pydroid3 应用程序中运行 python 代码,它会在存储我的代码的同一位置自动生成 CSV 文件。我的问题是如果我想将数据存储在手机的内部存储中,我应该输入什么路径?

import csv
csvfile = "Discrete_pos.csv"
with open(csvfile, "a") as fp:
    wr = csv.writer(fp, dialect='excel')
    wr.writerow(csvRow)
        

【问题讨论】:

    标签: android kivy apk csv-write-stream


    【解决方案1】:

    好吧,我想您的意思是External Storage 的路径(可以通过任何应用程序访问,您可以在移动文件资源管理器中看到)因为它已经存储在您的内部存储路径中。现在访问外部存储有两种方法。但首先你需要存储权限。要获得存储权限,请使用以下代码:

    from android.permissions import request_permissions, Permission
    request_permissions([Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE])
    

    现在您可以访问外部存储后,您可以使用以下代码获取外部存储路径:

    from android.storage import primary_external_storage_path
    external_storage = primary_external_storage_path()
    

    有时这在某些 android 设备上不起作用,所以如果你遇到这个问题,那么你也可以使用os.getenv

    external_storage = os.getenv('EXTERNAL_STORAGE')
    

    另外,不要忘记在buildozer.spec 文件的权限中写入READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE

    【讨论】:

    • 谢谢!我的问题与Internal_storage 有关,我给出的路径类似于/storage/emulated/0/kivy/my.csv。内部存储需要什么类型的权限和路径?
    • /storage/emulated/0External Storage 路径。内部存储路径类似于/data/data/APP_NAME,只能由您的应用访问。所以,这就是为什么我在前面的回答中说您正在寻找外部存储,而不是内部存储。
    • 您需要 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 权限。我已经在我的答案中提供了代码以获得该许可。答案中还提供了获取路径的代码。在你的buildozer.spec 文件中,会有一个选项说permissions = INTERNET 或类似的东西。它将被评论,只需取消评论并添加READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE即可。
    • 如果有帮助,请考虑accepting,欢迎加入 Stack!
    猜你喜欢
    • 2021-04-12
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    相关资源
    最近更新 更多