我正在寻找有关通过我的kivy应用程序从内部存储文件管理器加载图像的解决方案。
为了进行测试,我需要从内部存储中选择图像,然后使用opencv将其转换为灰度图像。
我已经尝试过filechooserlistview,但是我无法访问内部存储。
我还在我的buildozer.spec文件中添加了以下提到的行。 android.permissions = READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
最近两天我一直在寻找这种解决方案,但我没有得到任何合适的结果。
如果有的话,请共享代码。 预先感谢
答案 0 :(得分:2)
在较新的Android系统中,用于访问存储的buildozer权限请求不适用于kivy。
要获得这些权限,您必须通过以下方式在您的应用程序中要求它们:
from android.permissions import request_permissions, Permission
request_permissions([Permission.WRITE_EXTERNAL_STORAGE,
Permission.READ_EXTERNAL_STORAGE])
...,系统将要求用户使用您的应用访问存储。
android
库包含在buildozer版本中,因此您只需要执行该请求即可。
要获取内部存储路径:
from android.storage import primary_external_storage_path
SD_CARD = primary_external_storage_path()
请注意,这是系统的虚拟(内部)SD卡。
答案 1 :(得分:0)
尝试使用路径/ storage / emulated / 0 /
例如,在您的.kv文件中提及
#:import platform kivy.utils.platform
FileChooserListView:
rootpath: '/storage/emulated/0/' if platform == 'android' else '/'