Перейти к содержанию
Fire Monkey от А до Я

Andrey Efimov

Модераторы
  • Постов

    851
  • Зарегистрирован

  • Победитель дней

    129

Весь контент Andrey Efimov

  1. Плохо искали... Вариантов два: Скачать готовые обёртки или сгенерировать самостоятельно Скачать. На этом форуме: Полностью транслированное Android API 7-23 уровня (на самом деле там уже до 28) На гитхабе: Object Pascal (Delphi) JNI wrappers for the Android SDK Сгенерировать. Воспользоваться утилитой Java2OP (C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\converters\java2op\Java2OP.exe) идущей в комплекте со студией. Скачать утилиту: Утилита генерации pas файлов для AndroidAPI из jar файлов (правда версия старая, лучше использовать ту, что идёт в комплекте со студией)
  2. Если это весь код, то рекомендую ознакомиться с такой вещью как "Разрешения и запрос разрешений у пользователя" (Uses Permissions). С версии Android 6 меры безопасности усилили и продолжают это делать по сей день. Ознакомиться можно в любом месте интернета (оф. справка Студии, Андроида, множество статей в интернете, форумы (включая этот), стековерфлоу и т.д.). Вкратце, поставить галочку в настройках проекта на запрос разрешения для приложения недостаточно, необходимо написать код и в рантайме запрашивать разрешение у пользователя. В вашем случае, предполагаю, необходимо запросить разрешение "Manage external storage"(android.permission.MANAGE_EXTERNAL_STORAGE). Вот мой пример (тест на Android 11, в настройках проекта установлена галочка "Manage external storage" + выдача разрешения "Разрешить управление всеми файлами" вручную): var LPath: string; StringList: TStringList; begin LPath := TPath.Combine(TPath.GetSharedDownloadsPath, 'file1.txt'); StringList := TStringList.Create; try StringList.LoadFromFile(LPath); ShowMessage(StringList.DelimitedText); finally StringList.Free; end; end; Работает! p.s. Пожалуйста, в следующий раз прикладывайте свой чистый проект, так вы сэкономите чужое время и вырастит вероятность получить ответ быстрее .
  3. Сообщите версию ОС, приложите текстовый файл, а лучше чистый проект с демонстрацией проблемы (код, текстовый файл и т.п.). Возможно, так вам смогут помочь быстрее.
  4. Если глянуть файлик RAD Studio 12.3 Feature Matrix, то поддержка имеется. К сожалению, подсказать точнее не могу, т.к. не имею Community версии. up. Поддерживает. Видео на канале Embarcadero - Setting up Delphi Community Edition for Android Development
  5. Да, вот прямо сейчас проверял, модальная форма перестаёт проваливаться под основную. На всякий случай, Delphi 12.2.
  6. Посмотрел репорт о баге подробнее, оказалось, автор нашёл ещё один способ. Добавить BringToFront в модальную форму. Судя по его исследованию, проблема возникает, когда модальная форма генерирует изменение (и перекраску). Проверил на его демке, помогло (для теста добавил BringToFront в событие OnPaint модальной формы). p.s. Репорт (RSS-1714) появился там 6 сентября 2024 года
  7. Здравствуйте. Это форум по FireMonkey (FMX). Вам лучше обратиться на форум по FGX Native - Форумы - FGX Native
  8. Увидел эту тему и не мог понять, почему я не сталкивался с такой проблемой в своём приложении, которое почти для всех форм использует режим модального окна. Решил покопаться в официальной жире. Есть там тикет (RSS-1714) с описанием похожей проблемы и демкой. В общем, там дело в использовании StyleBook. Если установить UseStyleManager = False, то проблема исчезает, правда вместе с проблемой исчезает и стилизация окна Но может как то поможет вам в решении вашей проблемы.
  9. Специально сейчас проверил на новом пустом проекте в Delphi 10.4.2. Убирал строку из файла AndroidManifest.template.xml в корне проекта, собрал проект, проверил результат - всё хорошо, строки нет (в шаблоне (в корне проекта), промежуточном (в папке Debug) и итоговом файле AndroidManifest.xml). Перезапустил Студию, собрал проект, проверил результат - всё хорошо, строки нет. Мин. АПИ и целевое задано по умолчанию (строка из промежуточного манифеста): <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" /> Проверял вот с такими инструментами (данные из SDK Manager) : p.s. На всякий случай, может поможет, сделать Clean проекта предварительно выбрав целевую платформу Android
  10. Предположу, что проблема всё таки в манифесте и версии SDK. Попробуйте удалить строчку из манифеста: android:requestLegacyExternalStorage="true" и собрать приложение.
  11. Почитайте тут: Android Developers - Docs - Guides: Intents and Intent Filters Android Developers - Docs - Guides:<data> StackOverflow: Android intent filter: associate app with file extension
  12. Using a Custom Set of Java Libraries In Your RAD Studio Android Apps Adding A Java Library to Your Application Using the Project Manager Creating a Native Bridge File for a Java Library
  13. Установить то можно, но только если пользователь подготовлен к этому. Через спец. софт, можно скачать например с Google Play: App Bundle Install (вроде, не помню точно, как называется). На самом деле, подобного софта много. Т.к. установка aab не из маркета требует подготовки, то само собой лучше выкладывать на своём сайте сразу apk файлы.
  14. Restriction on non-resettable device identifiers В этом разделе: "Starting in Android 10, apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number. Caution: Third-party apps installed from the Google Play Store cannot declare privileged permissions." Best practices for working with Android identifiers
  15. Посмотрите эту страницу документации: Configuring your app for multi-window Mode
  16. Оба apk файла собраны для 64-бит. Вам нужно собрать 32 битную версию: Честно говоря, я не знаю как вам ещё объяснить это... (раз проблемы возникают даже на таком этапе, то я обязан сообщить, что на форуме существует раздел: Ищу подрядчика) Перед тем как вы соберётесь выложить сюда собранный 32-битный apk, проверьте его, открыв например в винраре. Зайдите в папку "lib" и проверьте каждую папку. Выше я уже написал, что будет внутри каждой папки для 32-битного apk и для 64-битного apk (https://fire-monkey.ru/topic/7447-android-10-и-музплеер/?do=findComment&comment=43249). Т.о. в 32-битном apk должна получиться примерно такая структура (на примере Project1): armeabi - заглушка libProject1.so. armeabi-v7a - ваш проект libProject1.so, сервис, библиотека bass и т.д. mips - заглушка libProject1.so. p.s. По поводу логов, то они сообщают о том, что не найдена библиотека PublicRadio (что собственно подтверждается и текстом ошибки и вскрытием apk файла, в нем библиотека есть только в папке для 64-бит, т.е. apk файл собран не для 32-бит).
  17. Вот что сейчас я вижу на Delphi 10.4.2 для чистого проекта Project1 и сервиса: Релиз для 32 бит (Application store/Development): armeabi - заглушка libProject1.so. armeabi-v7a - проект libProject1.so, сервис и т.д. mips - заглушка libProject1.so. Релиз для 64 бит (Development, для Application store создаётся aab файл(который может включать в себя 32 битную версию)) arm64-v8a - проект libProject1.so, сервис и т.д. Библиотеку bass я бы положил только в armeabi-v7a (для 32 бит) и arm64-v8a (для 64 бит). Эти галочки управляются из блока Project Manager, в зависимости от выбранной битности и конфигурации(Debug/Release и Application store/Development). Поэтому, если вы снимали их самостоятельно (через Deployment Manager), то рекомендую поставить их обратно, т.е. вернуть в дефолтное состояние. Повторюсь, сейчас нужно собрать 32 битную версию и выложить сюда для теста (возможно, PowerOwl или Олег смогут проверить). p.s. Вопрос, какую версию студии вы используете?
  18. но при этом подсовываете туда библиотеку bass... В этих папках (кроме arm64-v8a (для 64 бит) и armeabi-v7a (для 32 бит)) должны лежать заглушки, которые в случае несовместимости с девайсом буду выдавать сообщение типа такого "Application does not support this device". Собственно, PowerOwl, уже сделал предположение.
  19. По какой причине вы сняли галочки с записей связанных с libnative-activity.so?
  20. Скриншот Deployment Manager'а в "студию" (для 32 и 64 битной версии). Отсортируйте по столбцу Local Name.
  21. У меня на устройстве с Андроид 11 и эмуляторе с Андроид 7.1.2 приложение не падает. По теме, делайте дебаг версию и ищите устройство на котором падает, запускайте monitor.bat и приложение, снимайте логи и выкидывайте их сюда. Это нужно сделать как минимум для того чтобы убедиться в ваших догадках (что происходит падение из-за сервиса). Так же попробуйте вынести в кнопку код запуска сервиса. Документация по Foreground service: https://developer.android.com/guide/components/foreground-services
  22. Есть два варианта: 1) Добавить в промежуточном манифесте (находится тут: Project\Android\Debug\AndroidManifest.xml) Находим: <service android:exported="false" android:name="com.embarcadero.services.serPublic" /> Заменяем на: <service android:exported="false" android:foregroundServiceType="mediaPlayback" android:name="com.embarcadero.services.serPublic" /> Делаем деплой проекта. 2) Прописать сервис в шаблоне (находится тут: Project\AndroidManifest.template.xml) Примерно вот так. Находим: <%services%> Заменяем на: <service android:exported="false" android:foregroundServiceType="mediaPlayback" android:name="com.embarcadero.services.serPublic" /> <service android:exported="false" android:name="com.embarcadero.firebase.messaging.ProxyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:exported="true" android:name="com.google.firebase.messaging.FirebaseMessagingService"> <intent-filter android:priority="-500"> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:exported="false" android:name="com.google.firebase.components.ComponentDiscoveryService"> <meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" android:value="com.google.firebase.components.ComponentRegistrar" /> </service> Делаем сборку и деплой. p.s. Возможно есть ещё способы, я давненько не касался темы сервисов..
  23. <manifest> ... <service ... android:foregroundServiceType="mediaPlayback" /> </manifest> Более подробно можно почитать тут Foreground services - Declare foreground service types
  24. Возможно, для Андроид 10-11, необходимо указывать тип службы. (в манифесте: foregroundServiceType и в startForeground)
×
×
  • Создать...