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

Равиль Зарипов (ZuBy)

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

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

  • Посещение

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

    264

Весь контент Равиль Зарипов (ZuBy)

  1. Если читать внимательно, я объяснил что код не отработает. А это была иллюстрация как сделать кастомную кодировку зная CodePage
  2. У Nexus 5 физическое разрешение дисплея 1920х1080, а программа показывает 1776х1080. Почему такое несоответствие? Как вы наверное заметили у меня тоже такой девайс, так определяет fmx с этим ничего не поделать
  3. конечно нет, но это решение проблемы такое можно провернуть только для Андроида, для Windows нужно гуглить
  4. ему нужно назначить UserAgent, и желательно от IE
  5. для того чтобы узнать версию существует TOSVersion и метод Check
  6. Кнопку можно создать используя TListItemTextButton в обработчике OnUpdateObjects а на счёт прогрессбара, то тут нужно придумать что-то своё (или текстом или картинками делать)
  7. Вот такой код когда-то писал var Stream: TBytesStream; Size: Integer; Buffer: TBytes; Encoding: TEncoding; begin if OpenDialog1.Execute then begin Stream := TBytesStream.Create; try Stream.LoadFromFile(OpenDialog1.FileName); Buffer := Stream.Bytes; Size := TEncoding.GetBufferEncoding(Buffer, Encoding, TEncoding.Default); finally Freeandnil(Stream); end; if not TEncoding.IsStandardEncoding(Encoding) then Encoding := TEncoding.GetEncoding(Encoding.CodePage); ShowMessage(Encoding.EncodingName); end; проблема в том что в недрах этой строчки Size := TEncoding.GetBufferEncoding(Buffer, Encoding, TEncoding.Default); всегда ворачивается Кодировка по умолчанию (Windows - ANSI, Остальные - UTF-8), если кодировка отличается от стандартных (ANSI, ASCII, UTF7, UTF8, Unicode, BigEndianUnicode) И этот код никогда не выполнится if not TEncoding.IsStandardEncoding(Encoding) then Encoding := TEncoding.GetEncoding(Encoding.CodePage); Вариант остается такой, собрать преамбулы всех кодировок и самому проверить их соответсвие
  8. На сколько помню на андроид 5+, твоё приложение должно быть приложением по умолчанию для чтения/изменения/удаления сообщении. А как его поставить таким не понятно. а код скорей всего есть в интернете. Раньше делал автоматическое чтение смс от конкретного адресата, наверное код можно доделать.
  9. я использовал вот такой вариант в одной программе function GetScreenOffTimeout: integer; // Androidapi.JNI.Provider, FMX.Helpers.Android begin Result := 0; {$IFDEF ANDROID} Result := TJSettings_System.JavaClass.getInt(SharedActivityContext.getContentResolver, TJSettings_System.JavaClass.SCREEN_OFF_TIMEOUT, 15000); // 15 seconds is default is not found {$ENDIF} end; function SetScreenOffTimeout(ATimeOut: integer): Boolean; // Androidapi.JNI.Provider, FMX.Helpers.Android begin Result := false; {$IFDEF ANDROID} Result := TJSettings_System.JavaClass.putInt(SharedActivityContext.getContentResolver, TJSettings_System.JavaClass.SCREEN_OFF_TIMEOUT, ATimeOut); {$ENDIF} end;
  10. Решение ведь простое для тех кто в runtime создаёт компоненты, поместить на форму самим TLayout с именем sVKBHelperLayout и указать Parent у компонентов этот layout
  11. не сложно, но я незнаю как это сделать. можете внести изменения без PullRequest'a? нет аккаунта на Гитхабе
  12. XE7 update 1 и выше могут собирать под андроид 5 А то что у вас пути разные так это не проблема, если присмотреться в корне лежат линки с подобными путями.
  13. да, чтобы в android/data писать нужно через TPath.GetSharedDocumentsPath
  14. смотря где она лежит, если в android/data/<package name>/.... то к ней есть доступ, а если в /data/data/<package name>/... то не доступно для других, только из своего приложения
  15. для это существует серверная часть, а реализация уже индивидуальная. кто на что горазд
  16. для каких целей это необходимо? возможно веббраузеру передать, но без php кода (ему нужен сервер)
  17. http://alexbirukov.ru/?go=all/php-server-dlya-rassylki-push-na-android-i-ios/ для основы статья хорошая, но она требует доработки в плане добавления заголовка для обоих платформ. если в android'е это делается дописыванием строчки $message = new \push\CodeMonkeysRu\GCM\Message($tokens, array("title" => $title, "message" => $text)); то в классе для IOS нужно пару строк добавить в ApnsPHP/Message.php переменка новая в классе class ApnsPHP_Message // ZuBy === protected $_sTitle; // === ZuBy и два метода // ZuBy === public function setTitle($sText) { $this->_sTitle = $sText; } public function getTitle() { return $this->_sTitle; } // === ZuBy и в мотоде protected function _getPayload() нужно добавить проверку есть ли у нас Title было примерно так (не помню уже) $aPayload[self::APPLE_RESERVED_NAMESPACE]['alert'] = (string)$this->_sText; заменить на такую конструкцию // ZuBy === if (isset($this->_sTitle) and isset($this->_sText)){ if (!empty($this->_sTitle)){ $aPayload[self::APPLE_RESERVED_NAMESPACE]['alert']['title'] = (string)$this->_sTitle; $aPayload[self::APPLE_RESERVED_NAMESPACE]['alert']['body'] = (string)$this->_sText; } else { if (isset($this->_sText)) { $aPayload[self::APPLE_RESERVED_NAMESPACE]['alert'] = (string)$this->_sText; } } } // === ZuBy в методе public function getPayload() нужно заменить следующее $sJSONPayload = str_replace( '"'.self::APPLE_RESERVED_NAMESPACE.'":[]', '"'.self::APPLE_RESERVED_NAMESPACE.'":{}', $sJSON); на вот такое // ZuBy === $sJSONPayload = str_replace( ['"'.self::APPLE_RESERVED_NAMESPACE.'":[]', '"alert":[]'], ['"'.self::APPLE_RESERVED_NAMESPACE.'":{}', '"alert":{}'], $sJSON); // === ZuBy и теперь мы можем вызвать наш новый метод # Устанавливаем параметры отправки сообщения $message->setSound(); $message->setTitle($title); // ZuBy $message->setBadge(0); $message->setText($text); если не ошибаюсь заголовок появился начиная в IOS 8.2
  18. или просто пропадёт интернет, остановка приложения/сервиса и прочие радости
×
×
  • Создать...