KivyAndroid:编写公共文件

2024-09-28 17:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Kivy编写一个Android应用程序,并希望该应用程序写入Android文件系统,一些公共目录/文件。在

目前,如果我的应用程序编写了一个文件(使用Python),android本地文件管理器可以读取该文件,但我的计算机mtp无法读取该文件(这些文件不会出现在InternalStorage中)。不过,adbshell可以看到这些文件。在

[编辑]解决方案可以是使用带有Pyjnius的mediascannerconnerconnect扫描文件中的mtp,但是正如我下一个答案所示,它对我不起作用。[/编辑]

在我看来,我在寻找与这里描述的javagetsharedpreferences的等价物:http://developer.android.com/guide/topics/security/permissions.html。在

我认为在buildozer规范中有一个类似的选项:android私有存储此处描述的字段:https://raw.githubusercontent.com/kivy/buildozer/master/buildozer/default.spec。在

但是,我不能让它发挥作用。。。也许我没有正确使用buildozer命令:在规范中的设置之后”android.private_存储=False“,我尝试了几个命令,比如“buildozer android release--dir public my_dir”,或者“buildozer android release--public my_dir”,等等。。。,没有成功。在


Tags: 文件命令规范com应用程序编辑releasemy
2条回答

我一直在尝试使用Pyjnius中的mediascannerconnerconnerconnect使文件可以查看而不重置,但没有成功。在将文件写入文件系统后,目标是扫描它们。下面是运行但没有任何明显效果的代码。在

from jnius import autoclass , cast
from jnius import PythonJavaClass, java_method

PythonActivity = autoclass('org.renpy.android.PythonActivity')
activity = cast('android.app.Activity', PythonActivity.mActivity)
context = activity.getApplicationContext()

MediaScannerConnection = autoclass('android.media.MediaScannerConnection')
MediaScannerConnection.scanFile(context,successFiles,None,None)   #successFiles is a list of absolute paths of files on Android

我也尝试过使用scanFile方法的另一个重载形式,但我无法正确定义所需的接口:

^{pr2}$

或多或少解决了:这显然是mtp中的一个已知缺陷:有些文件,取决于它们的编写方式(我使用Python“open”指令),直到重新启动设备才会显示。事实上,重启设备确实有帮助。在

相关问题 更多 >