存取可移动SD卡

问题描述

我正在使用此代码访问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卡上。

解决方法

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

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

但是,如果存在 ,则根据您的情况is to use plot(x,y) 处理它的正确方法。然后,此方法将返回需要迭代的多个路径,并检查Context.getExternalFilesDirs()以确定哪个目录具有更多可用存储空间。

(提示:在具有可移动SD卡的典型手机上,File.getFreeSpace()返回的列表中的第二项是probably可移动媒体,但这是一个肮脏的骇客。)

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