Das Verzeichnis ist: /storage/emulated/0
Die Fehlermeldung, die ich erhalte, ist: [Errno 1] Vorgang ist nicht zulässig: '/storage/emulated/0/test.txt'
Ich frage nach Berechtigungen im Code, aber die Berechtigungen sind nicht vorhanden Wird beim Start oder bei der Installation der Anwendung dazu aufgefordert.
Hier ist der Code;
Code: Select all
import kivy
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.utils import platform
import os
class MyGridLayout(GridLayout):
def __init__(self, **kwargs):
super(MyGridLayout, self).__init__(**kwargs)
self.cols = 1
self.dir_button = Button(text="Show Directory")
self.dir_button.bind(on_press=self.press_dir)
self.add_widget(self.dir_button)
self.write_button = Button(text="Write File")
self.write_button.bind(on_press=self.press_write)
self.add_widget(self.write_button)
self.text_field = TextInput(multiline=True)
self.add_widget(self.text_field)
def press_dir(self, instance):
if platform == 'android':
from android.storage import primary_external_storage_path
self.file_dir = primary_external_storage_path()
else:
self.file_dir = App.get_running_app().user_data_dir
if not os.path.exists(self.file_dir):
os.mkdir(self.file_dir)
self.text_field.text = self.file_dir
def press_write(self, instance):
self.file_name = "test.txt"
self.full_name = os.path.join(self.file_dir, self.file_name)
try:
with open(self.full_name, "w") as outfile:
outfile.write("Hello World")
except Exception as e:
self.text_field.text = str(e)
class TestWriteApp(App):
def build(self):
return MyGridLayout()
if platform == 'android':
from android.permissions import request_permissions, Permission
request_permissions([Permission.WRITE_EXTERNAL_STORAGE,
Permission.READ_EXTERNAL_STORAGE])
testwriteapp = TestWriteApp()
testwriteapp.run()
Schaltfläche „Verzeichnis anzeigen“
Geben Sie hier die Bildbeschreibung ein
Schaltfläche „Datei schreiben“
Geben Sie hier die Bildbeschreibung ein
Vielen Dank für Ihre Hilfe.
Ich habe eine Reihe von Dingen ausprobiert ... Berechtigungen in der Datei buildozer.spec hinzugefügt, den Ausgabespeicherort in das interne user_data_dir geändert (was funktioniert hat, I Denken Sie, aber ich brauche, dass der Benutzer die Dateien-App verwenden kann, um die generierte Datei abzurufen)
Mobile version