Ошибка разрешения при чтении файла Excel из приложения KivyAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка разрешения при чтении файла Excel из приложения Kivy

Сообщение Anonymous »

Заранее спасибо.
У меня возникла проблема с файлом .xlsx, хранящимся во внутренней памяти планшета Android.
Это приложение создано на основе KivyMD 2.3.0. ()dev с помощью Buildozer, и я попробовал все, что знал, я уже отредактировал файл .spec, чтобы разрешить разрешения на чтение и запись в хранилище, я изменил атрибуты файла с помощью команды chmod в файле xlsx, я использовал разрешения на запуск в своем коде Python и уже разрешены права доступа к файлам на самом планшете.
На самом деле я могу перечислять и читать другие файлы, такие как изображения (.jpeg, .png), но мой .xlsx не появляется при поиске для этого в MDFileManager (KivyMD)
Это соответствующий код:

Код: Выделить всё

from kivy.lang import Builder
from kivymd.app import MDApp
from PIL import Image as PILImage
import openpyxl
from openpyxl.drawing.image import Image as ExcelImage
from kivymd.uix.filemanager import MDFileManager

#Internal storage where .xlsx file resides
workbook = openpyxl.open('/storage/emulated/0/Documents/template2.xlsx')
ws = workbook.active

KV = '''
MDScreen:
theme_bg_color: "Custom"
md_bg_color: self.theme_cls.backgroundColor

MDCard:
style: "elevated"
pos_hint: {"center_x": .3, "center_y": .5}
padding: "4dp"
size_hint: None, None
size: "240dp", "100dp"
# Sets custom properties.
theme_shadow_color: "Custom"
shadow_color: "green"
theme_bg_color: "Custom"
md_bg_color: "white"
md_bg_color_disabled: "grey"
theme_shadow_offset: "Custom"
shadow_offset: (1, -2)
theme_shadow_softness: "Custom"
shadow_softness: 1
theme_elevation_level: "Custom"
elevation_level: 2
on_release: app.filemanager()

MDRelativeLayout:

MDIconButton:
icon: "dots-vertical"
pos_hint: {"top": 1, "right": 1}

MDLabel:
text: "Elevated"
adaptive_size: True
color: "grey"
pos: "12dp", "12dp"
bold: True

class Example(MDApp):

def __init__(self):
super().__init__()
self.manager_open = False
self.file_manager = MDFileManager(
exit_manager=self.exit_manager, select_path=self.select_path
)

def filemanager(self):
self.file_manager.show('/storage/emulated/0/')  # Internal storage where files reside
self.manager_open = True    # It lists everything except the .xlsx file

def select_path(self, path: str): # Called when click on the selected file

with PILImage.open(path) as img: # Adds an image to a cell
img = img.resize((150, 100), PILImage.LANCZOS)
img.save("img.png")
img = ExcelImage("img.png")
ws.add_image(img, "B2")
ws["A1"] = "Hola Mundo"
self.exit_manager()
workbook.save('/storage/emulated/0/Documents/output.xlsx')

def exit_manager(self, *args):
self.manager_open = False
self.file_manager.close()

def events(self, instance, keyboard, keycode, text, modifiers):
'''Called when buttons are pressed on the mobile device.'''

if keyboard in (1001, 27):
if self.manager_open:
self.file_manager.back()
return True

def build(self):
self.theme_cls.primary_palette = "Green"
return Builder.load_string(KV)

Example().run()

Невозможно открыть файл .xlsx из-за ошибки разрешения и сбоя приложения; Я написал еще один код для открытия файла .xlsx непосредственно из MDFileManager, и он запускается, но, как я уже упоминал, я вижу все файлы, кроме моего файла .xlsx.
Я уже изменил атрибуты файла, используя chmod a+xwr 'template2.xlsx'
Я уже разрешил права доступа к файлам в самом планшете.
Это строки разрешений файла buildozer.spec :
'''
(список) Разрешения
(см. https://python-for -android.readthedocs.io/en/latest/buildoptions/#build-options-1 для всех поддерживаемых синтаксисов и свойств)
android.permissions = android.permission.INTERNET, android. разрешение.WRITE_EXTERNAL_STORAGE, android.permission.READ_EXTERNAL_STORAGE
'''
И это журнал ошибок:
PermissionError: [Errno 13 ] Разрешение отклонено: '/storage/emulated/0/Documents/template2.xlsx'

Подробнее здесь: https://stackoverflow.com/questions/786 ... m-kivy-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»