Помогите пожалуйста с компиляцией kivy в apk, как сделать чтобы на андройде спрашивало разрешение на память

это main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.filechooser import FileChooserListView
from kivy.uix.label import Label
from kivy.core.audio import SoundLoader
from plyer import notification
from kivy.utils import platform
if platform == "android":
    from android.permissions import request_permissions, Permission
    request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])

class MusicPlayer(App):
    def build(self):
        self.layout = BoxLayout(orientation='vertical')

        self.file_chooser = FileChooserListView(path='/', filters=['*.mp3'])
        self.file_chooser.bind(on_submit=self.on_file_selected)

        self.play_button = Button(text='Play', on_press=self.play_music, size_hint=(None, None), size=(100, 50))
        self.pause_button = Button(text='Pause', on_press=self.pause_music, size_hint=(None, None), size=(100, 50))
        self.stop_button = Button(text='Stop', on_press=self.stop_music, size_hint=(None, None), size=(100, 50))
        self.next_button = Button(text='Next', on_press=self.next_track, size_hint=(None, None), size=(100, 50))

        self.layout.add_widget(self.file_chooser)
        control_layout = BoxLayout()
        control_layout.add_widget(self.play_button)
        control_layout.add_widget(self.pause_button)
        control_layout.add_widget(self.stop_button)
        control_layout.add_widget(self.next_button)
        self.layout.add_widget(control_layout)

        self.music = None
        self.current_track_index = 0
        self.tracks = []

        self.selected_file_label = Label(text="No file selected")
        self.layout.add_widget(self.selected_file_label)

        self.notification = None

        return self.layout
    
    def on_start(self, **kwargs):
        if platform == "android":
            from android.permissions import request_permissions, Permission
            request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])

    def on_file_selected(self, instance, selection, *args):
        if selection:
            self.tracks = selection
            self.selected_file = selection[0]
            self.selected_file_label.text = f"Selected file: {self.selected_file}"
            self.current_track_index = 0

    def play_music(self, instance):
        if self.tracks:
            if self.music and self.music.state == 'play':
                self.music.stop()
                if self.notification:
                    self.notification.cancel()
                self.notification = None

            self.music = SoundLoader.load(self.selected_file)
            if self.music:
                try:
                    self.music.play()
                    self.create_notification()
                except Exception as e:
                    print(f"Error playing music: {e}")
                else:
                    print("Music started playing.")
            else:
                print("Failed to load music.")

    def create_notification(self):
        if self.music:
            if not self.notification:
                self.notification = notification.notify(
                    title='Music Player',
                    message=f'Now playing: {self.selected_file}',
                    app_name='Music Player',
                    actions=[
                        {'title': 'Pause', 'callback': self.pause_music_notification},
                        {'title': 'Stop', 'callback': self.stop_music_notification},
                        {'title': 'Next', 'callback': self.next_track_notification},
                    ]
                )

    def pause_music(self, instance):
        if self.music and self.music.state == 'play':
            self.music.stop()
            if self.notification:
                self.notification.cancel()
            self.notification = None

    def pause_music_notification(self):
        self.pause_music(None)

    def stop_music(self, instance):
        if self.music:
            self.music.stop()
            if self.notification:
                self.notification.cancel()
            self.notification = None

    def stop_music_notification(self):
        self.stop_music(None)

    def next_track(self, instance):
        if self.tracks:
            self.current_track_index = (self.current_track_index + 1) % len(self.tracks)
            self.selected_file = self.tracks[self.current_track_index]
            self.selected_file_label.text = f"Selected file: {self.selected_file}"
            self.play_music(None)

    def next_track_notification(self):
        self.next_track(None)

if __name__ == '__main__':
    MusicPlayer().run()

а это buidozer.spec

[app]

# (str) Title of your application
title = MusicPlayer

# (str) Package name
package.name = musicplayer

# (str) Package domain (needed for android/ios packaging)
package.domain = org.musplayer

# (str) Source code where the main.py live
source.dir = .

# (list) Source files to include (leave empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas

# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png

# (list) Source files to exclude (leave empty to not exclude anything)
#source.exclude_exts = spec

# (list) List of directory to exclude (leave empty to not exclude anything)
#source.exclude_dirs = tests, bin, venv

# (list) List of exclusions using pattern matching
# Do not prefix with './'
#source.exclude_patterns = license,images/*/*.jpg

# (str) Application versioning (method 1)
version = 0.1

# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,plyer,android,kivymd


#android.api = 33

я компилирую под андроид запускаю на эмуляторе на пк все работает а на телефоне андроид 13 приложение тоже запускается но не спрашивает разрешение на память и у меня не отображается в нем выбор трека хотя на эмуляторе все норм


Ответы (0 шт):