【问题标题】:Access removable SD card访问可移动 SD 卡
【发布时间】:2021-02-18 07:58:16
【问题描述】:

我正在使用此代码访问SD card

import os
from os.path import join
from jnius import autoclass
#from android.permissions import request_permissions, Permission

#request_permissions([Permission.WRITE_EXTERNAL_STORAGE,
#                     Permission.READ_EXTERNAL_STORAGE])
Environment = autoclass('android.os.Environment')
self.working_directory = os.path.join(Environment.getExternalStorageDirectory().getAbsolutePath(), "my_app_dir")
if not os.path.exists(self.working_directory):
  os.makedirs(self.working_directory)

但是我注意到数据仅在内部 SD 卡上创建。如何访问可移动手机 SD 卡以及我需要哪些权限(我需要在那里读写)?我的数据很大,所以我需要将它保存在可移动 SD 卡上。

【问题讨论】:

    标签: kivy pyjnius


    【解决方案1】:

    首先,“外部存储”与“可移动存储”不同。外部存储基本上是defined by Google originally,作为“不总是可访问的存储”,例如因为它是通过 USB 安装到 PC 上的。可以肯定地说,从 Android 4 开始,这个概念就有了lost most of the meaning

    系统实际使用哪种存储作为“外部”是completely up给设备制造商。您不应该假设它是可移动媒体。您也不应该假设可移动媒体有更多的可用存储空间,甚至系统上存在

    如果一个,那么在你的情况下处理它的正确方法is to useContext.getExternalFilesDirs()。然后,此方法将返回您需要迭代的多个路径,检查 File.getFreeSpace() 以确定哪个目录有更多可用存储空间。

    (提示:在带有可移动 SD 卡的典型手机上,getExternalFilesDirs() 返回的列表中的第二项是 probably 可移动媒体,但这是一个肮脏的黑客攻击。)

    一种现代方法是研究存储访问框架,这里是the documentation

    【讨论】:

    • 有没有例子,如何在python(kivy)中使用SAF?我不知道JavaKotlin
    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多