-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) получил реакцию от Major в Как сделать стандартные диалоговые окна не такими скучными?
ну это и есть родные окошки андроида, с родными стилями (Dark, Light)
в окошках не используются делфи контролы
-
Равиль Зарипов (ZuBy) получил реакцию от r@di0 в Как сделать стандартные диалоговые окна не такими скучными?
ну вот такая есть штука у меня
Это нативные окошки пока только под андроид
NativeView.zip
-
Равиль Зарипов (ZuBy) отреагировална sinuke в Защита FMX
например kami у него софт, связанный с авиацией (куда уж серьезнее?) и написан как раз на FMX под iOS (если не ошибаюсь)
-
Равиль Зарипов (ZuBy) получил реакцию от rakhmet в Увеличение и уменьшение размера
такой возможности нет, т.к. (Default) - это константы
если не ошибаюсь для Windows - 12, Android - 16, IOS - ...
для adnroid программно
для ios программно
-
Равиль Зарипов (ZuBy) отреагировална kami в Защита FMX
Вы подменяете терминологию. Никакое приложение само по себе не является устойчивым к взлому, если оно не содержит средства защиты от этого взлома. На каком бы языке ни было написано.
Более того, нужно отличать хак приложения (чтобы оно запустилось вне зависимости от наличия лицензии) и получение данных, с которыми работает это приложение.
-
Равиль Зарипов (ZuBy) отреагировална kami в Защита FMX
Давайте сперва уточним, что именно вы подразумеваете под взломом?
Потому что если рассматривать взлом, как его понимаю я - то всякие "проверки сертификатов" будут убраны в ходе этого взлома. Поскольку являются неотъемлимой частью хака приложения. Взлом и дальнейшее распространение на мой взгляд - это "сделать так, чтобы программа всегда считала себя лицензионной и работала как ни в чем ни бывало".
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Чем отличается Debug от Release?
Ну как-бы все вроде из названия понятно
Debug конфиг есть возможность пользоваться дебагером вес приложения больше из-за доп. файлов (deployment) Release конфиг дебагер не работает вес меньше возможность публикации приложении в магазины платформ -
Равиль Зарипов (ZuBy) отреагировална kami в Защита FMX
клиентскую часть, т.е. непосредственно само приложение - никак. Без доступа к серверу в моем случае оно бесполезно.
Сервер может обладать информацией о всех устройствах, которые когда-либо к нему подключались и может блокировать новые, если лимит используемых устройств превышен. Или блокировать конкретные, если они выведены из эксплуатации. Или вообще залочить доступ всем устройствам клиента - по усмотрению.
Но это в моем случае, т.к. приложение не общедоступно и не будет выкладываться в AppStore.
Ну и "вылечивать" приложение в моем случае смысла нет - достаточно скоро его функционал просто устареет, и крякнутая программа просто станет не актуальной.
В общем и целом, если программе требуется подключение к серверу - защиту нужно реализовывать имено на нем. Но от взлома защищаться бессмысленно - когда приложение станет действительно популярным, его все равно поломают. А до тех пор - можно спать спокойно, взломщики даже не посмотрят в вашу сторону.
-
Равиль Зарипов (ZuBy) получил реакцию от Major в Чем отличается Debug от Release?
Ну как-бы все вроде из названия понятно
Debug конфиг есть возможность пользоваться дебагером вес приложения больше из-за доп. файлов (deployment) Release конфиг дебагер не работает вес меньше возможность публикации приложении в магазины платформ -
Равиль Зарипов (ZuBy) отреагировална Fedor K в Как можно реализовать таблицу?
Для таких таблиц лучше ее рисовать на ListView. Пока не видел достойных гридов для Андроид.
Пример реализации:
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Занимаемая приложением память
Если грубо, то примерно вот так:
uses Androidapi.JNI.App, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNIBridge; function IntArrayToJArray(const OrigArray: array of Integer): TJavaArray<Integer>; var I: Integer; begin Result := TJavaArray<Integer>.Create(Length(OrigArray)); for I := Low(OrigArray) to High(OrigArray) do Result.Items[I] := OrigArray[I]; end; procedure TForm3.Button1Click(Sender: TObject); var ActivityManager: JActivityManager; List: JList; Iterator: JIterator; Process: JActivityManager_RunningAppProcessInfo; ArrayMemoryInfo: TJavaObjectArray<JDebug_MemoryInfo>; begin ActivityManager := TJActivityManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE)); List := ActivityManager.getRunningAppProcesses; Iterator := List.iterator; while Iterator.hasNext do begin Process := TJActivityManager_RunningAppProcessInfo.Wrap(Iterator.next); ArrayMemoryInfo := ActivityManager.getProcessMemoryInfo(IntArrayToJArray([Process.pid])); Memo1.Lines.Add(JStringToString(Process.processName) + ' ' + ArrayMemoryInfo[0].getTotalSharedDirty.ToString); end; end;
Повторюсь, это грубый, но рабочий пример. Рекомендуется доработать его перед использованием в рабочем проекте!
-
Равиль Зарипов (ZuBy) получил реакцию от #WAMACO в [Статья] Онлайн-сервисы в помощь разработчику по дизайну
Ссылка: http://blog.rzaripov.kz/2017/01/blog-post.html
Автор: Зарипов Равиль @ZuBy
Описание: Онлайн-сервисы в помощь разработчику по дизайну
-
Равиль Зарипов (ZuBy) получил реакцию от Major в Как подключать java-обёртки?
Поиск по форуму сэкономил бы много времени
как раз то что вы хотите сделать, даже код есть
-
Равиль Зарипов (ZuBy) получил реакцию от Andrey Efimov в Как подключать java-обёртки?
Поиск по форуму сэкономил бы много времени
как раз то что вы хотите сделать, даже код есть
-
Равиль Зарипов (ZuBy) отреагировална kami в Как подключать java-обёртки?
А можно и не выходить из IDE: Ctrl+Shift+F, выбираем Search in directories.
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Как подключать java-обёртки?
Да, не спорю.
Пару версий назад, данный поиск у меня глючил и я окончательно вернулся на Total Commander (он меня ещё ни разу не подводил )
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Странный Splash
Утилита написана на JAVA, т.к. у вас уже установлен JRE, то просто скачиваете и запускаете.
Более подробно про утилиту можно почитать по ссылке из статьи Улучшенный 9-patch редактор
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Как подключать java-обёртки?
GetActivityManager - что это? такого в АПИ нет...
Может вы имели ввиду ActivityManager -> getRunningAppProcesses() ? Если так, то вам необходимо подключить файл Androidapi.JNI.App.pas.
Чтобы быстро найти файл, в котором реализован интерфейс/класс/метод из АПИ, можно воспользоваться любой утилитой позволяющей искать текст в файлах. Это может быть FAR, Total Commander и др. (я использую Total Commander)
-
Равиль Зарипов (ZuBy) отреагировална Andrey Efimov в Как подключать java-обёртки?
android-** (** - версия АПИ, чем выше цифра, тем больше нового поддерживает обёртка. Обратная совместимость поддерживается.) Выбираете файл по АПИ под которое пишите.
По вашему примеру:
JList уже определён в файле "Androidapi.JNI.JavaTypes.pas", т.е. нет необходимости подключать стороннюю обёртку. Указываете в uses Androidapi.JNI.JavaTypes и работаете с JList.
p.s. Обёртки, которые вы скачали, необходимо проверять, т.к. многие из них сгенерены с ошибками.
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Долгое нажатие на элементе (Android)
TGestureManager кинуть на форму связать контрол и TGestureManager через свойство Touch выбрать LongTap в InteractiveGestures в событии OnGesture контрола написать примерно такое if EventInfo.GestureID = igiLongTap then ShowMessage('Long Tap'); а меню это уже совсем другая тема
-
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Долгое нажатие на элементе (Android)
TGestureManager кинуть на форму связать контрол и TGestureManager через свойство Touch выбрать LongTap в InteractiveGestures в событии OnGesture контрола написать примерно такое if EventInfo.GestureID = igiLongTap then ShowMessage('Long Tap'); а меню это уже совсем другая тема
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Минимальный набор permissions
Ну так отключите если не используется и не будет пугать.
Из коробки сделано, чтобы новички при создании нового приложения не испытывали сложности. Эти все разрешения используются в демках студии. По очереди или скопом.
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в Долгое нажатие на элементе (Android)
TGestureManager кинуть на форму связать контрол и TGestureManager через свойство Touch выбрать LongTap в InteractiveGestures в событии OnGesture контрола написать примерно такое if EventInfo.GestureID = igiLongTap then ShowMessage('Long Tap'); а меню это уже совсем другая тема
-
Равиль Зарипов (ZuBy) получил реакцию от Major в Долгое нажатие на элементе (Android)
TGestureManager кинуть на форму связать контрол и TGestureManager через свойство Touch выбрать LongTap в InteractiveGestures в событии OnGesture контрола написать примерно такое if EventInfo.GestureID = igiLongTap then ShowMessage('Long Tap'); а меню это уже совсем другая тема