当我尝试实现 kivy 的文件选择器时,我看到它在没有小米手机的情况下在任何地方都运行良好。当我转到该页面时,它显示了文件选择器的空布局。我的代码如下:
Mypopup:
pos: (root.width * .025, root.height *.020)
#size:(300,300)
auto_dismiss: True
size_hint:(1,1)
id:pop
BoxLayout:
orientation:'vertical'
FileChooserIconView:
id: filechooser
on_selection: pop.selected(filechooser.selection)
Button:
text:'upload'
size_hint_x:.7
size_hint_y:.1
background_color:1,1,1,1
on_release:pop.dismiss
pos_hint:{'center_x':.5,'center_y':.5}
on_press: app.next_screen('resource/tima/know_myself/my_information')
尝试使用路径/storage/emulated/0/
例如,将其添加到您的.kv
文件中,如下所示:
#:import platform kivy.utils.platform
FileChooserListView:
rootpath: '/storage/emulated/0/' if platform == 'android' else '/'
我已经搞砸了几个小时的类似问题。我发现您必须将根路径设置为/storage/emulated/0/
.仅设置路径是不够的,因为如果 rootpath 保留None
(默认情况下(,它会为用户提供导航出/storage/emulated/0/
的选项。当只设置路径时,即使我有读/写权限,我也会收到权限被拒绝错误,并且filechooser
没有显示任何内容。
也许这应该是显而易见的,但它不适合我......
我在xperia XA手机中遇到了同样的问题。 我发现这可能是一个权限问题。
我通过将文件选择器的默认路径设置为应用程序的文件夹来发现这一点,在我的情况下,文件夹是:"/data/data/org.test.myapp/files",然后它运行良好,但如果我尝试离开该文件夹,它不再起作用,即使我请求了所有必要的权限(WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE(。
因此,如果您尚未尝试,请尝试请求上述权限,或者为了测试起见,请在Android的设置中手动授予应用程序的权限。
如果这没有帮助,请尝试将默认路径设置为您的应用在 Android 中有权访问的路径:
`FileChooserListView:
path: "/data/data/org.test.myapp/files"`
看看这是否能解决空虚的问题。
路径通常是"/data/data/name.of.your.package",但如果这不起作用,请尝试运行命令(手机中已安装应用程序并且手机连接到USB(:
adb shell
pm list packages
找到应用的程序包名称,然后:
run-as package.name
pwd
复制显示的路径。
我希望这有所帮助。