Перейти к содержанию

Andrey Efimov

Модераторы
  • Активность

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

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

    113

Andrey Efimov стал победителем дня 12 октября 2020

Andrey Efimov имел наиболее популярный контент!

8 Подписчиков

Информация о Andrey Efimov

  • Звание
    Продвинутый пользователь

Контакты

  • Сайт
    delphifmandroid.blogspot.ru github.com/AndrewEfimov

Информация

  • Пол
    Мужчина
  • Город
    Москва

Посетители профиля

8 757 просмотров профиля
  1. К сожалению, статья (перевод), которую вы рекомендуете, опубликована в закрытом разделе (для пользователей с подпиской FGX Native). Человек мог просто не знать/не заметить про особенность, озвученную выше. Вот тут можно прочитать оригинал статьи (на английском): https://quality.embarcadero.com/browse/RSP-27218
  2. Используйте System.IOUtils и ListBox (но лучше ListView). Не забудьте кидать пользователю запрос разрешений. Ну и я точно знаю, что на некоторых девайсах вам не удастся получить список папок и файлов из корня (стандартными средствами).
  3. Andrey Efimov

    Android Services

    Всё возможно... В данном случае, у Джима код отрабатывал как ожидается, по причине того (я предполагаю), что он тестировал его на Nexus 5 (2015 чистый Android 6). Я также занимался изучением сервисов примерно в 2016, но тестировал этот код на многих девайсах. Как помню, на Android 4.4.2 всегда отрабатывал как ожидается. А вот на более новых версиях + (это жирный плюс, влияющий очень на многое) девайсах разных производителей (очень выделялись на тот момент Xiaomi) дела обстояли очень плохо, т.к. производители вводили свои ограничения для приложений (например, "авто запуск приложения/сервиса" - пользователь должен был разрешить подобное поведение в настройках приложения). Учитывая свой опыт, могу дать такой совет: Попробуйте дать все возможные разрешения на автозапуск приложения/сервиса примерно тут: "Безопасность – Разрешения – Автозапуск – Название вашего приложения" и проверить код ещё раз. Вот ещё небольшое описание из моего старого проекта: Из-за всех этих изменений от производителей, тема стала достаточно непростой. По этой причине считаю, что начинать нужно с нуля, т.е. с официальной справки гугла: Службы Foreground services
  4. Попробуйте так: var Device: JUsbDeviceConnection; ... Device := FUsbManager.JavaClass.openDevice(); p.s. Учитывайте тот факт, что обёртка могла сгенериться неправильно. Java2Op не всегда отрабатывает как надо, поэтому появляется необходимость проверки и правки результата. p.s.2. И вроде как у вас как раз такой случай... Попробуйте вот эту: JUsbManagerClass = interface(JObjectClass) ['{1048A6E9-E1B5-4DA5-A168-ED91E8DE5284}'] {class} function _GetACTION_USB_ACCESSORY_ATTACHED: JString; cdecl; {class} function _GetACTION_USB_ACCESSORY_DETACHED: JString; cdecl; {class} function _GetACTION_USB_DEVICE_ATTACHED: JString; cdecl; {class} function _GetACTION_USB_DEVICE_DETACHED: JString; cdecl; {class} function _GetEXTRA_ACCESSORY: JString; cdecl; {class} function _GetEXTRA_DEVICE: JString; cdecl; {class} function _GetEXTRA_PERMISSION_GRANTED: JString; cdecl; {class} property ACTION_USB_ACCESSORY_ATTACHED: JString read _GetACTION_USB_ACCESSORY_ATTACHED; {class} property ACTION_USB_ACCESSORY_DETACHED: JString read _GetACTION_USB_ACCESSORY_DETACHED; {class} property ACTION_USB_DEVICE_ATTACHED: JString read _GetACTION_USB_DEVICE_ATTACHED; {class} property ACTION_USB_DEVICE_DETACHED: JString read _GetACTION_USB_DEVICE_DETACHED; {class} property EXTRA_ACCESSORY: JString read _GetEXTRA_ACCESSORY; {class} property EXTRA_DEVICE: JString read _GetEXTRA_DEVICE; {class} property EXTRA_PERMISSION_GRANTED: JString read _GetEXTRA_PERMISSION_GRANTED; end; [JavaSignature('android/hardware/usb/UsbManager')] JUsbManager = interface(JObject) ['{6F603A25-E816-4012-9B23-054B428A4A75}'] function getAccessoryList: TJavaObjectArray<JUsbAccessory>; cdecl;//Deprecated function getDeviceList: JHashMap; cdecl;//Deprecated function hasPermission(device: JUsbDevice): Boolean; cdecl; overload;//Deprecated function hasPermission(accessory: JUsbAccessory): Boolean; cdecl; overload;//Deprecated function openAccessory(accessory: JUsbAccessory): JParcelFileDescriptor; cdecl;//Deprecated function openDevice(device: JUsbDevice): JUsbDeviceConnection; cdecl;//Deprecated procedure requestPermission(device: JUsbDevice; pi: JPendingIntent); cdecl; overload;//Deprecated procedure requestPermission(accessory: JUsbAccessory; pi: JPendingIntent); cdecl; overload;//Deprecated end; TJUsbManager = class(TJavaGenericImport<JUsbManagerClass, JUsbManager>) end; p.s.3. С правилами создания обёртки можно ознакомиться тут https://delphifmandroid.blogspot.com/2014/07/java.html Статья старая, но правила связанные с полями/константами и методами действительны по сей день.
  5. Вы не видите Location потому что получаете заголовки уже после редиректа, т.е. заголовки уже для самого файла. А Location появляется во время первого запроса по адресу https://telegram.org/dl/desktop/win, там то как раз сервер и сообщает (в заголовках), что ваш запрос будет перенаправлен по адресу https://updates.tdesktop.com/tsetup/tsetup.2.4.2.exe и выдаёт вам новую порцию заголовков без Location. Чтобы убедиться в этом, достаточно установить HandleRedirects = False.
  6. Обратите внимание на конечные пути (Remote Path). Цитата, которую вы привели, как раз говорит вам "they should be alongside the libPublicRadio.so files under the lib folder.", т.е. для файлов библиотеки должны быть указаны те же пути, что и для libPublicRadio.so.
  7. Есть ещё вот такие компоненты: CData Enterprise Connectors
  8. Пожалуйста. Способ изначально был задуман для плавного перехода на новое АПИ, но видимо забыли убрать его... Вот ваш реальный манифест из файла который вы выложили выше. (Надеюсь приложение не несёт никакого вреда?))
  9. это не баг. Я же выше расписал вам в чём дело. Я декомпилировал ваш файл и там лежит другой манифест.
  10. Ааа, ну всё ясно... Вы выложили не тот манифест... В вашем приложении используется способ обхода о котором я говорил. Если бы сразу исходники предоставили, то всё решилось бы быстро. На самом деле у вас указано minSdkVersion= 14 и targetSdkVersion=14. Это способ обхода запроса разрешений, но гугл обещал его выпилить... видимо забыли...)) Возвращаясь к вашему вопросу, студия 10.3.* просто меняет значения на новые (или даже пересоздаёт файл манифеста, выяснять не буду) и поэтому разрешения не выдаются. Вот и вся загадка... Да, кстати, приложение ваше не запускается. Падает с чёрным экраном.
  11. Ок. сообщение с файлом я скрыл, т.к. не вызывает доверия. Было бы не плохо, получить от вас хоть какие-то исходники. Если такое происходит и с хеллоуворлд, то хотя бы эти исходники. Тут дело в том, что я компилю на 10.3.3 хеллоу ворлд с такими же разрешениями и у меня они не выдаются... О багах, дырах и т.п. сообщать сюда https://quality.embarcadero.com/
  12. Скинуть исходники в личку есть возможность? Я знаю только один способ, но не исключено, что есть ещё...
  13. Сейчас я разбираюсь как вы получили разрешения в обход системы безопасности...
×
×
  • Создать...