-
Постов
828 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Весь контент x11
-
Советую перейти на ListView. Ну или приобрести стороннюю разработку.
-
Object Pascal Interface Files Of The Android 27 and Android 28 SDKs For Delphi 10.2 Tokyo https://www.fmxexpress.com/object-pascal-interface-files-of-the-android-27-and-android-28-sdks-for-delphi-10-2-tokyo/
-
всё нужно переделывать согласно новой идеи http://fire-monkey.ru/topic/5181-свой-источник-в-телефонной-книге/
-
Пока изучаю: https://developer.android.com/guide/topics/providers/contacts-provider?hl=ru Если у кого-то есть примеры на delphi/fmx, буду признателен
-
Я так понимаю, что приложение при установке должно добавить какую-то учётную запись в настройки синхронизации? Как это сделать? В минифесте нужно что-то прописывать?
-
Не знаю как сделать, с чего начать. В телефонной книге Андроида можно создать свой источник и загрузить туда имена + телефоны, даже картинки. Это нужно для программы типа АОН. Т.е. в этот источник нужно импортировать раз в час, например, свои данные: очищать источник полностью перед импортом и импортировать всё заново.
-
Настройка Delphi Community Edition для разработки под Android https://www.youtube.com/watch?v=_DXtU_8QdVE
-
Разницы между START_STICKY и START_REDELIVER_INTENT для меня нет. Мне главное, чтобы при (пере)создании службы, был создан и BroadcastReceiver,который будет ждать вызова. procedure TDMSrv.AndroidServiceCreate(Sender: TObject); begin CreateBroadcastReceiver; end; procedure TDMSrv.CreateBroadcastReceiver; begin if not assigned(fBroadcastReceiver) then begin fBroadcastReceiver := TCSBroadcastReceiver.Create(nil); Log('not assigned BroadcastReceiver, creating: ' + fBroadcastReceiver.ToString); end; fBroadcastReceiver.OnReceive := BroadcastReceiverOnReceive; fBroadcastReceiver.Clear;// Items.Clear; fBroadcastReceiver.RegisterReceiver; fBroadcastReceiver.Add(PHONE_STATE); fBroadcastReceiver.Add(NEW_OUTGOING_CALL); Log('CreateBroadcastReceiver'); end;
-
во всех примерах именно START_STICKY
-
Пути Господни Гугла не исповедимы.
-
Просто поменять - этого мало. Должен быть соответствующий функционал. Просто приложение не будет нормально работать. Это проверено уже.
-
Возможно, что приложение даже не установится. Я своё, например, не смог установить на Самсунг Галакси на базе Андроид 8. Текста ошибки нет, т.е. даже не знаешь причину
-
Не важно, для каких программистов. Если ты собираешься выкладывать приложение в маркет, могут забанить. Мало того, производители устройств, да и сам Андроид не будет давать нормально работать приложению, как мне кажется, т.е. будут программно сами разработчики Андроида привязываться к этим правилам.
-
С 1 августа 2018 года новые правила в Гугл плей. https://developer.android.com/distribute/best-practices/develop/target-sdk The following considerations apply to apps targeting Android 8.0 and higher versions of the platform: (Следующие соображения применимы к приложениям, ориентированным на Android 8.0 и более поздние версии платформы:)
-
к сожалению примеров, информации и справки очень мало, а сообщество FMX всё ещё не очень большое
-
Может кому пригодится пример с использованием startForeground, а то в справке по Delphi не нашёл uses System.Android.Notification, AndroidApi.JNI.Support; // для JNotification и JNotificationCompat_Builder ... ... function TDMSrv.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; Var Action: string; notification: JNotification; NotificationBuilder: JNotificationCompat_Builder; begin Action := JStringToString(Intent.getAction); // if Action = 'StartService' then // CreateBroadcastReceiver; if Action = 'StopService' then begin JavaService.stopSelf; result := TJService.JavaClass.START_NOT_STICKY; // don't reload service Log('Service stoped'); exit; end; NotificationBuilder := TJNotificationCompat_Builder.JavaClass.init(TAndroidHelper.Context); NotificationBuilder := NotificationBuilder.setSmallIcon(TAndroidHelper.Context.getApplicationInfo.icon); NotificationBuilder := NotificationBuilder.setContentTitle(StrToJCharSequence(TAndroidHelper.ApplicationTitle)); NotificationBuilder := NotificationBuilder.setContentText(StrToJCharSequence('тело сообщения')); notification := NotificationBuilder.build; Self.JavaService.startForeground(1, notification); result := TJService.JavaClass.START_STICKY; // rerun service if host app stops end; Не нашёл информации, почему именно 1 здесь: Self.JavaService.startForeground(1, notification); Это в DataModule, который в службе TDMSrv = class(TAndroidService)
-
Нашёл. В модуле AndroidApi.JNI.Support.
-
Подскажите, а где в Delphi живёт JNotificationCompat_Builder? Справка молчит.
-
ты на глаз определяешь?
-
Я не знаю, как это визульно, но при нажатии на кнопку у меня волны расходятся плавно.
-
В общем, я создал новую тему с целю переписать немного принцип запуска службы http://fire-monkey.ru/topic/5168-процедура-в-сервисе-через-broadcastreceiver/
-
Процедура в сервисе через BroadcastReceiver
x11 опубликовал вопрос в Широковещательные сообщения (Broadcast)
В общем, исходя из этой >> темы, пришёл к выводу, что служба будет всё равно прибиваться системой, хоть даже если приложение будет в белом списке. У меня в службе используется программный BroadcastReceiver. Но его можно перенести в XML Манифест. Примеры-то есть, но они для "чистого" андроид-приложения. Там идея такая, что в случае события Андроид сам вызывает указанную в манифесте процедуру. Например, при входящем звонке вызывается указанная программистом процедура. Поэтому вопрос, как быть с FMX-приложением? Я же не могу указать там свою процедуру, написанную на Delphi. Нужна какая-то прослойка. Если у кого есть опыт, примеры, поделитесь, пожалуйста. Спасибо. -
а за "<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>" могут забанить в Гул-маркете