问题描述
我正在为Android开发KivyMD文本文件浏览器。以下是代码段:
def __init__(self,**kwargs):
self.file_manager = MDFileManager(
exit_manager=self.exit_manager,select_path=self.select_path,prevIoUs=False,)
request_permissions([Permission.WRITE_EXTERNAL_STORAGE,Permission.READ_EXTERNAL_STORAGE,Permission.INTERNET])
self.ROOT_PATH = primary_external_storage_path()
以上初始化工作正常,以下代码语句也启动了文件管理器/浏览器。
self.file_manager.show(self.ROOT_PATH)
但是生成的内容只是文件夹名称或图像文件(.jpg,.jpeg,.png)。没有显示其他文件类型。
我在调用self.file_manager.show(self.ROOT_PATH)
之前尝试了以下操作,但是响应没有变化。
self.file_manager.use_access = True
self.file_manager.prevIoUs=False
self.file_manager.preview=False
当我尝试使用self.file_manager.ext = ['txt']
扩展名过滤技术时,即使列出的图像文件也消失了,仅列出/显示了文件夹名称。
因此,我写此请求是为了寻求专家的答复。
谢谢。
解决方法
-
从主分支-https://github.com/kivymd/KivyMD,而不是pip中更新库。
self.file_manager = MDFileManager(
exit_manager=self.exit_manager,select_path=self.select_path,preview=True,# preview=True - deprecated
)
-
如果设置“预览”参数,则仅图像将显示在文件管理器中。如果要文件管理器显示所有文件类型,请不要使用“预览”参数
self.file_manager = MDFileManager(
exit_manager=self.exit_manager,ext=[".py","kv"],)
,
如果上述情况不起作用,请尝试:
self.file_manager = MDFileManager(exit_manager=self.exit_manager,)
self.file_manager.ext = [".py",".kv"]
,
我和你有同样的问题。
在 android.developers 上发现实际上对于“所有文件”需要 MANAGE_EXTERNAL_STORAGE 权限。
只需将 buildozer.spec 文件 MANAGE_EXTERNAL_STORAGE 也放入:
(列表)权限
android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE,MANAGE_EXTERNAL_STORAGE 无需将它放在 py 代码中,因为您需要其他权限。 他们可以在代码中避免每次启动应用程序时都要求获得许可。
但是,安装应用程序后,您必须继续使用应用程序权限来管理所有文件allow permission
为我工作,希望它有所帮助。