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

Kitty

Пользователи
  • Постов

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

  • Посещение

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

    16

Активность репутации

  1. Like
    Kitty получил реакцию от Roman V в Программа не запускается под Android   
    #include <System.IniFiles.hpp> #include <System.IOUtils.hpp> #include <memory> //**** #ifdef __ANDROID__ String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), L"options.ini"); #elif _Windows String path = System::Ioutils::TPath::Combine(ExtractFilePath(ParamStr(0)), L"options.ini"); #endif if(FileExists(path)) { std::unique_ptr<TIniFile> FileINI(new TIniFile(path)); String ip = FileINI->ReadString(L"HOST", L"ip", L"127.0.0.1"); //**** 1. std::unique_ptr используется чтобы избавиться от delete. std::unique_ptr все делает сам.
    2. Файл ini для Андроида надо сохранить в UTF-8.
  2. Like
    Kitty отреагировална Andrey Efimov в Политика конфиденциальности   
    Вопросы:
    На какой версии Андроида проверяете?
    Вы точно удалили разрешение из манифеста? Проверьте итоговый манифест.
     
    Чуть позже, сам смогу проверить на разных версиях Андроид.
    Можете приложить файл манифеста из папки Проект/Android/Debug или Realese/.
     
    Ап.
    P.s. ок, вижу, вопрос решился.
  3. Like
    Kitty отреагировална Andrey Efimov в Политика конфиденциальности   
    Вероятно, почти очевидно, что на устройствах с АПИ 14 будет вываливаться ошибка о том, что нет необходимого разрешения. Прочитайте 3 последних сообщения, где я привёл примеры касательно пушей.
     
    Ну и от себя могу добавить, зачем вам поддерживать столь древние устройства? Если верить Platform Versions, таких устройств осталось всего 0.7%. Сейчас можно смело ставить minSdkVersion = 16.
  4. Like
    Kitty отреагировална Andrey Efimov в Политика конфиденциальности   
    Ну смотрите, если я правильно понял, то данное разрешение требуется до Андроид 4.0.4 (включительно). И учитывая тот факт, что вы хотите поддерживать максимальное количество устройств, то должен сработать такой способ (описанный в сообщении выше):
    Строка будет выглядеть так:
    <uses-permission android:name="android.permission.GET_ACCOUNTS" android:maxSdkVersion="15" /> Разрешение будет запрашиваться на всех версиях до той (включительно), которую вы указали.
    Но, опять же нужно протестировать приложение как минимум на версиях Андроид 4.0 - 4.1.2 и Андроид 4.4.2 и выше. Это очень важно сделать, т.к. поведение может отличаться от ожидаемого. (мне с пушами пока не особо доводилось связываться, в теории, изменение в манифесте должно помочь). Если проверите, то обязательно отпишитесь сюда о результатах.
  5. Like
    Kitty отреагировална Fedor K в TWebBrowser и неверный ssl сертификат на сайте.   
    Причина такого поведения довольно простая - java библиотеки FMX часто передают в Delphi только уведомление о событии, без непосредственного влияния на процесс. Открываем библиотеку fmx.jar и смотрим код класса WebClient (package com.embarcadero.firemonkey.webbrowser;):
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { super.onReceivedSslError(view, handler, error);// обработка ошибки происходит здесь по дефолту if (this.mListener != null) { this.mListener.onReceivedSslError(view, handler, error);//передача в Delphi лишь уведомления, что событие произошло } } Одно из решений*:
    1. Заменяем** код на:
    public void onReceivedSslError(WebView paramWebView, SslErrorHandler paramSslErrorHandler, SslError paramSslError) { if (this.mListener != null) { this.mListener.onReceivedSslError(paramWebView, paramSslErrorHandler, paramSslError);//Delphi обработчик } else { super.onReceivedSslError(paramWebView, paramSslErrorHandler, paramSslError);//обработчик по умолчанию } } После манипуляций получаем свою версию библиотеки, мой пример здесь (Delphi Berlin).
    2. Подключаем библиотеку к проекту (скриншот ниже).
    3. Копируем unit FMX.WebBrowser.Android в папку своего проекта и меняем следующие строки:
    procedure TAndroidWebBrowserService.TWebBrowserListener.onReceivedSslError( P1: JWebView; P2: JSslErrorHandler; P3: JSslError); begin P2.proceed;//добавляем разрешение для истекших сертификатов FWBService.FailLoadingWithError;//стандартный обработчик OnDidFailLoadWithError end; *Если вариант изменения кода java библиотек совсем не подходит, можно реализовать все средствами Delphi. Для этого создаем свою реализация класса WebViewClient (или WebClient) и задаем его для JWebBrowser:
    //все тот же unit FMX.WebBrowser.Android; procedure TAndroidWebBrowserService.InitUIThread; var lClient : TWebBrowserCLientFix;//наш класс begin FJWebBrowser := TJWebBrowser.JavaClass.init(TAndroidHelper.Activity); FJWebBrowser.getSettings.setJavaScriptEnabled(True); lClient := TWebBrowserCLientFix.Create(Self); FJWebBrowser.setWebViewClient(lClient);//меняем на наш класс FListener := TWebBrowserListener.Create(Self); lClient.SetWebViewListener(FListener); //комментируем //FJWebBrowser.SetWebViewListener(FListener); **Замена кода происходит по тому же сценарию, как и создание своих собственных классов на java. Если кому потребуется помощь - пишите, я помогу ответами и примером.

  6. Like
    Kitty отреагировална Ingalime в [Андроид] статья ZuBy и фантомный пуш   
    Избавление от фонтомных пушей - замена посылки пуша с get на post. Соотвественно изменение php сервера.
    Решение подсказано Fedor K.
  7. Like
    Kitty отреагировална Евгений Корепов в [Статья] PHP сервер для рассылки Push на Android и iOS   
    По идее флаг нужно убирать при NotRegistered однозначно. При инвалидской регистрации тоже.
    Лучше пользоваться не http интерфейсом Firebase, а XMPP,  там, насколько я знаю, можно получать всю инфу, вплоть до подтверждения получения пуша клиентом.
    В скрипте и не отправляются сообщения на не активные токены, по крайней мере у меня, зачем? В SQL запросе "WHERE active = 1" решает проблему.
    P.S. Надо задуматься над коммерческим PUSH сервером ;-) Площадок у меня есть, голова и руки тоже. Сделать по 50 рублей в месяц подписку. Чтоб зашел, зарегился, вбил свои данные и создавай push проекты, отправляй, получай и все такое...
  8. Like
    Kitty получил реакцию от ENERGY в Отправка пуша из консоли firebase   
    Спасибо получилось.
    Для таких не умных как я, которые не понимают, что в консоли FCM надо писать самой:
    1. Откройте дополнительные параметры в консоли FCM .
    2. В первом поле КЛЮЧ принудительно самостоятельно напечатайте "mеssage" без ошибок в первом поле. В поле напротив напишите текст сообщения.
    3. При этом появиться дополнительные поля ввода ниже.
    4. В первом новом поле ниже напишите принудительно title без ошибок и напротив в значении ваш текст...
     
     
  9. Like
    Kitty отреагировална Ingalime в [Андроид] статья ZuBy и фантомный пуш   
    Получилась программа по отсылке пушей при взаимодействии с сервером PHP ZuBy. Кто пользуется этим PHP сервером и кого есть время покритикуйте...
    Скачать: http://my-files.ru/uwtv19
  10. Like
    Kitty получил реакцию от Ingalime в [Андроид]контроль интревала времени в сервисе   
    Спасибо.
    Не до конца понятно... Несколько разных мнений и рекомендаций... Можно показать на паскале единственно правильное решение для службы андроида, где делаеться отсечка времени в 60 минут для сработки события.
    Спасибо.
  11. Like
    Kitty отреагировална Rusland в [Андроид]контроль интревала времени в сервисе   
    Стандартный TTimer использовать нельзя. Тут посмотрите 
  12. Like
    Kitty отреагировална ENERGY в Автоматизация работы со стилями   
    Вы бы рассказали что там происходит в ролике, а то не у всех есть лишние 40 минут.
    Offtop 
    Есть один отличный прием, о котором мало кто знает.
    Если вам нужно поработать со стилем от моб. платформы на Windows (так гораздо быстрее программировать и отлаживать GUI) - можно просто открыть в текстовом редакторе style файл, найти в нем строку platform и заменить ее с напр. ANDROID на MSWINDOWS, сохранить, а затем загрузить в текущий Default стиль.
     
     
  13. Like
    Kitty отреагировална ENERGY в Сортировка TListViewItems   
    Что то я не понял в чем проблема у автора. 
    Стандартный метод сортировки работает (Delphi Berlin).
     
    uses System.Generics.Defaults; ... procedure TForm1.ButtonSortClick(Sender: TObject); var   Comparer: IComparer<TListViewItem>; begin   Comparer := TDelegatedComparer<TListViewItem>.Create(     function(const LeftItm, RightItm: TListViewItem): Integer     begin       Result := CompareText(LeftItm.Text, RightItm.Text);     end);   ListView1.Items.Sort(Comparer); end; А также можно по Data 
     
    procedure TForm1.ButtonSortClick(Sender: TObject); var Comparer: IComparer<TListViewItem>; begin Comparer := TDelegatedComparer<TListViewItem>.Create( function(const LeftItm, RightItm: TListViewItem): Integer begin Result := 0; //no change if LeftItm.Data['number'] > RightItm.Data['number'] then Result := 1 //depend on sort order asc/desc else if LeftItm.Data['number'] < RightItm.Data['number'] then Result := -1; //depend on sort order asc/desc end);   ListView1.Items.Sort(Comparer); end;  
    Не забудьте BeginUpdate - EndUpdate. 
    Напомню что к объектам ListViewItem можно обращаться не через Data['name'], а напрямую через индексы, что гораздо быстрее, т.к. не нужно сравнивать все строки в цикле, это важно при большом количестве Objects per Item (напр. больше 5 в режиме DynamicAppearance).
  14. Like
    Kitty получил реакцию от Andrey Efimov в [Android] BeaconServiceDemo стандартный пример не работает   
    Вспомнила, что об этом уже говорил master webs:
    http://fire-monkey.ru/topic/2734-вызов-приложения-из-нофитикейшена/?do=findComment&comment=17497
    Просьба проголосовать ибо это касается дельфи, а телефонов с андроид 4.4 много у пользователей:
    https://quality.embarcadero.com/browse/RSP-18117
    Возможно не работает и  версии Андроид 5, но такого устройства под рукой нет, чтобы проверить...
     
  15. Like
    Kitty отреагировална Brovin Yaroslav в Toast и tDuration   
    Добрый день,
    На андроиде нет такой возможности. Там эти два режима задаются через константы и не имеют привязки к конкретным значениям времени.
     
  16. Like
    Kitty отреагировална Andrey Efimov в Исключить устройства с Intel Atom как не поддерживаемые   
    Оф. справка: Workaround for Android 4.0/Kindle Fire Message: "Application does not support this device"
  17. Like
    Kitty отреагировална ENERGY в Фотография стандартной камерой смартфона   
    @Barbanel
    Никаких проблем c этим кодом не было с 4 и 5 Android. На 6 не проверял. Точно такой же код пишет народ на Java там тоже никаких проблем по этому поводу не писали.
    Чтобы убедиться что проблема точно не в паузе, попробуйте установить sleep на 10- 20 секунд. 
    Может вы не закрываете курсор после какого то из запросов раньше?
    да еще момент, в Action TakePhotoFromCameraAction нужно установить свойство NeedSaveToAlbum := true  . Возможно это ключевой момент в вашем вопросе (т.к. на некоторых телефонах (привет HTC) фотки сохраняются в галерею даже если NeedSaveToAlbum = false, это уже баг конкретной модификации Андроида).
  18. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в XE10.2 Tokyo есть запись вебинара от 28.03.2017?   
    это просто печенька для разрабов, чтобы не сваливали со студии. Мол всё будет, но "завтра"
  19. Like
    Kitty отреагировална Евгений Корепов в XE10.2 Tokyo есть запись вебинара от 28.03.2017?   
    Какой то странный хотфикс. Ничего не фиксит. Мой запрос https://quality.embarcadero.com/browse/RSP-17813 не пофиксили. 
    "We also have an Android compatibility patch in the works to address Android issues around text input, control rendering and performanc" - я правильно перевел? Мы так же имеем фикс для самых насущных глюков, но вам не покажем.
  20. Like
    Kitty отреагировална ElenaS. в Новая версия FastReport FMX   
    Добрый день. Теперь у продукта универсальный установщик, вместо отдельных для каждой версии. На сайте поменяли.
  21. Like
    Kitty отреагировална enatechno в XE10.2 Tokyo есть запись вебинара от 28.03.2017?   
    Похоже первый hotfix . 
     


     
  22. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в Ошибка при получении фото от камеры   
    разрешения нужны, т.к. папка в которую автоматически сохраняется файл, не является директорией проекта
    а значит используется запись и чтение с внешнего носителя
  23. Like
    Kitty отреагировална ArturAD в GCMIntentService или Multiline Push and Local Notification   
    Это стандартная работа. Если нажать и потянуть вниз за сообщение, то тоже появится перенос.
  24. Like
    Kitty отреагировална Евгений Корепов в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]   
    Равиль, сразу извиняюсь, готов понести наказание, но запощу решение. 
    Как уже говорил все просто, если у вас 4345 сообщений, то делим массив токенов и отправляем 4 раза по 1000, и один раз 345. Не забывайте что вы программисты, и во всех языках программирования это делается одинаково просто. Вот код, писал прямо в гитхабе, естественно не проверял, если что то упустил, прошу прощения (а упустил я анализ результата).
    function pushSendOver1000($title, $text, $tokens, $server_key) { $Count_Success = 0; $DeviceCountMax = 1000; $DeviceCountIndex = 0; $DevicesTokenPacketArray = array(); while ($DeviceCountIndex<=count($tokens)) { $DevicesTokenPacketArray = array_slice($tokens, $DeviceCountIndex, $DeviceCountMax); pushSend($title, $text, $DevicesTokenPacketArray, $server_key); $DeviceCountIndex = $DeviceCountIndex + $DeviceCountMax; } } Запостил также на гитхаб. Можете ручками добавить функцию в конец https://github.com/rzaripov1990/PUSHTestFCM/blob/master/pushTest/push.php и соответственно вызывать не pushSend, а pushSendOver1000
  25. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в Кнопки у ListVew ItemAppearance   
    все что связано с размерами высчитывается вручную в событии OnUpdateObjects
    две текстовые кнопки
×
×
  • Создать...