访问可移动 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。
我正在使用此代码访问 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。