访问可移动 SD 卡

Access removable SD card

我正在使用此代码访问 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 卡上创建。如何访问可移动 phone SD 卡以及我需要哪些权限(我需要在那里读写)?我的数据很大,所以我需要把它保存在可移动的SD卡上。

首先,“外部存储”与“可移动存储”不同。外存基本就是defined by Google originally as "a storage which isn't always accessible", e.g. because it is mounted to a PC via USB. It's safe to say that since Android 4 this concept has lost most of the meaning.

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

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

(提示:在带有可移动 SD 卡的典型 phone 上,由 getExternalFilesDirs() 编辑的列表 return 中的第二项是 可移动媒体,但那是一个肮脏的黑客。)

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