android 我如何使用kivy在手机内存中创建文件夹

ymdaylpp  于 2023-01-24  发布在  Android
关注(0)|答案(1)|浏览(240)

我想创建一个文件夹。谁的内容由用户创建的一些文件。但我不明白如何可以创建一个文件夹在我的手机内存。
我的文件夹将位于/storage/emulate/0/Android/data/org.app.test/文件夹。我正在尝试

os.mkdir(str(primary_external_storage_path() + "/Android/data/org.app.test/folder"))

但它不起作用。
附言:这可能是android许可的问题。

yebdmbv4

yebdmbv41#

你的应用需要请求存储权限才能访问它的私有文件夹之外的文件。下面是工作示例。我将os.mkdir更改为os.makedirs,以便能够创建你的路径的父目录。
main.py

from kivy import platform
from kivy.factory import Factory
from kivy.app import App
import os

class TestApp(App):

    def on_start(self):
        if platform == "android":
            from android.permissions import Permission, check_permission, request_permissions
            perms = [Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE]
            if not all([check_permission(perm) for perm in perms]):
                Factory.MyPermReqPopup().open()

    def popup_close(self):
        from android.permissions import Permission, request_permissions
        request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])
        exit()

    def create_folder_click(self):
        if platform == "android":
            from android.storage import primary_external_storage_path
            os.makedirs(str(primary_external_storage_path()) + "/Android/data/org.app.test/folder", exist_ok=True)

TestApp().run()

test.kv

BoxLayout:
    orientation: 'vertical'
    size: root.width, root.height
    Button:
        text: 'create folder'
        on_release: app.create_folder_click()

<MyPermReqPopup@Popup>:
    auto_dismiss: False
    on_dismiss: app.popup_close()
    title: 'Please grant storage permission, then launch app again'
    size_hint: (1, 0.3)
    BoxLayout:
        size: root.width, root.height
        Button:
            text: 'OK'
            on_release: root.dismiss()

相关问题