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

Ingalime

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

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

  • Посещение

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

    5

Весь контент Ingalime

  1. Так заработало: procedure TForm2.FormShow(Sender: TObject); begin WebBrowser1.EnableCaching := false; WebBrowser1.Navigate('http://91.199.194.34/radionews.html'); end;
  2. Здравствуйте. Не могу разобраться с TWebBrowser на андроиде. TWebBrowser упорно грузит старый вариант страницы. Ввожу ссылку в Хроме - все нормально, вижу новый вариант страницы. Выгружаю программу полностью из памяти. Компилирую. Запускается по новой на устройстве и вижу старый вариант страницы. Пробую создать TWebBrowser динамически, не помогает, показывает старый первый вариант страницы. RAD10.4.1. Clean проекта не помогло. Подскажите, что не так? Спасибо. procedure TForm2.FormShow(Sender: TObject); var WebBrowser: TWebBrowser; begin WebBrowser := TWebBrowser.Create(Self); WebBrowser.Parent := Self; WebBrowser.Align := TAlignLayout.Client; //упорно отображает старый вариант страницы, а в хроме или опере все нормально WebBrowser.Navigate('http://91.199.194.34/radionews.html'); end;
  3. Здравствуйте. Кому нибудь удалось воспроизвести этот стандартный пример?: http://http://docwiki.embarcadero.com/RADStudio/Sydney/en/Firebase_Android_Support У меня FDeviceToken получается пустой. Помогите советом. Спасибо. RAD10.4.1 Phone Readmi 5A Android 8.1
  4. Вам ответили давно: http://fire-monkey.ru/topic/5620-переход-к-x64/?sortby=date&page=3
  5. У кого в 10.4 не пустой токен устройства покажите, пожалуйста, ваш манифест. Может помимо этой строки еще что-то надо: <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" />
  6. Нет. https://blogs.embarcadero.com/rad-studio-roadmap-november-2020/ https://blogs.embarcadero.com/rad-studio-november-2020-roadmap-pm-commentary/
  7. Прошу прощения исправлено. Забыла что для новых версий надо импортировать google-services.json из коносли firebase Ошибка пропала, однако токен устройства пустой. В манифесте из статьи https://fire-monkey.ru/topic/3840-статья-настройка-пуш-уведомлении-через-сервис-firebase-для-android-и-ios-часть-2/ указано <%receivers%> <service android:name="com.embarcadero.gcm.notifications.GCMIntentService" /> В опциях проекта api key указан. true в опциях проекта Entitlement List-> Receve push notifications указано Из консоли firebse взят Sender ID const FAndroidServerKey = '1036128679228'; Но не выходит каменный цветок. Это не помогло пустой токен http://fire-monkey.ru/topic/4839-fpushservicedevicetokenvalue-nil-что-делать/?page=3#comment-32995
  8. Здравствуйте. Создано приложение для получения пушей. Материалы отсюда: https://fire-monkey.ru/topic/3840-статья-настройка-пуш-уведомлении-через-сервис-firebase-для-android-и-ios-часть-2/ Отсюда стало понятно что для 10.4.1 надо сделать изменение: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Firebase_Android_Support TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.FCM); Однако при старте приложения сыпались ошибки: java.lang.RuntimeException: Unable to get provider com.embarcadero.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: ApplicationId must be set. at android.app.ActivityThread.installProvider(ActivityThread.java:6398) и т.д. При полностью закоментированном коде ошибка не пропадала. Выяснилось, что ошибка возникает если установить в true в опциях проекта Entitlement List-> Receve push notifications тогда ошибка. Снять галочку ошибки нет. Кому либо удалось сделать приложение с поддержкой пушей в 10.4.1? Для 10.3.1 был какой-то патч: https://blog.marcocantu.com/blog/2019-05-android-firebase-patch-blog.html Но у меня 10.4.1 Спасибо.
  9. У меня это первый проект в RAD 10.4.1
  10. Да. Причина найдена. Скорее всего это ошибка эмбаркадеро. Не дружит этот проект с внутренностями IDE. Если в опциях проекта снять галочку Generate Android App Bundle file (arm + arm64) то нормально компилируется и в режиме Development и в Application Store. При установленной галочке нормально только в режиме Development. Придется публиковать только для Андроид 6+...
  11. Здравствуйте. В проекте используется библиотека BASS для воспроизведения звука. Проект Андроид Дельфи 10.3 / 10.4.1 В режиме Development все работает и компилируеться нормально. Ошибок нет. При переключении в режим Application Store при попытке Build возникает ошибка: [DCC Error] E2597 C:\Users\Public\Documents\Embarcadero\Studio\20.0\PlatformSDKs\android-ndk-r17b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: cannot find -lbass [DCC Fatal Error] F2588 Linker error code: 1 ($00000001) Все пути прописаны. Ничего не менялось. Однако в Development режиме все нормально, а в Application Store ошибка. Что может быть упущено для Application Store? Спасибо.
  12. Код ниже отрабатывает как надо. Проверено в Андроид 7.1 и Андроид 8.1. Других телефонов нет. Может кому пригодиться код для службы переднего плана. Код скомбинирован из этого источника: Foreground Service function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; var //Android 8.1 ServiceChannel: JNotificationChannel; NotificationManager: JNotificationManager; Obj: JObject; NewIntent: JIntent; ncb: JNotificationCompat_Builder; ntf: JNotification; PendingIntent: JPendingIntent; //Android 7.1 service : JService; serviceObjectId : Pointer; ntf2 : JNotification; intent2 : JIntent; PendingIntent2 : JPendingIntent; begin Result := TJService.JavaClass.START_NOT_STICKY; // can't ref .O on earlier phones, must hardcode if TJBuild_VERSION.JavaClass.SDK_INT > 26 then // JBuild_VERSION_CODES.JavaClass.O begin //Android 8.1 //new ways for SDK > 26 (won't be called when API < 26 anyways) ServiceChannel := TJNotificationChannel.JavaClass.init( StringtoJString('com.radio.one'), //CHANNEL_ID StrToJCharSequence('Public radio Channel'), TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT ); Obj := TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE); NotificationManager := TJNotificationManager.Wrap(Obj); NotificationManager.createNotificationChannel(ServiceChannel); NewIntent:= TAndroidHelper.Context.getPackageManager().getLaunchIntentForPackage( TAndroidHelper.Context.getPackageName()); NewIntent.setAction(TJIntent.JavaClass.ACTION_MAIN); NewIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); NewIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); PendingIntent := TJPendingIntent.JavaClass.getActivity( TAndroidHelper.Context, 0, NewIntent, TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK ); ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); ncb.setContentTitle(StrToJCharSequence('PublicRadio Service')); // ncb.setTicker(StrToJCharSequence('MyCommsService')); // can't remember why this is commented out to be honest ncb.setSmallIcon(JavaService.getApplicationInfo.icon); ncb.setContentIntent(PendingIntent); ncb.setOngoing(True); ntf := ncb.build; JavaService.startForeground(StartId, ntf); end else begin //Android 7.1 serviceObjectId := (JavaService as ILocalObject).GetObjectID; service := TJService.Wrap(serviceObjectId); /////ntf2 := TJNotification.Create; ////ntf2.icon := service.getApplicationInfo.icon; NewIntent:= TAndroidHelper.Context.getPackageManager().getLaunchIntentForPackage( TAndroidHelper.Context.getPackageName()); NewIntent.setAction(TJIntent.JavaClass.ACTION_MAIN); NewIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); NewIntent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); PendingIntent2 := TJPendingIntent.JavaClass.getActivity( TAndroidHelper.Context, 0, NewIntent, TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK ); ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); //intent2 := TJIntent.Create; //PendingIntent2 := TJPendingIntent.JavaClass.getActivity(service.getApplicationContext, 0, intent2, 0); ncb.setContentTitle(StrToJCharSequence('PublicRadio')); // ncb.setTicker(StrToJCharSequence('MyCommsService')); ncb.setSmallIcon(JavaService.getApplicationInfo.icon); ncb.setContentIntent(PendingIntent2); ncb.setOngoing(True); ntf2 := ncb.build; ntf2.setLatestEventInfo(service.getApplicationContext, StrToJCharSequence('PublicRadio'), StrToJCharSequence('PublicRadio Service'), PendingIntent2); service.startForeground(StartId, ntf2); end; end; Разрешение Foreground service=true В манифесте: <service android:exported="false" android:name="com.embarcadero.services.serPublic" /> Старт службы: private { Private declarations } FService: TLocalServiceConnection; //***************************************** if FService = Nil Then Begin FService := TLocalServiceConnection.Create; FService.StartService('serPublic'); end; Проверено в Дельфи 10.3 и Дельфи 10.4.1
  13. Это вариант работает для Андроид 8.1. С Андроид 7 падает после слеша. Видимо для Android 7.0 чего-то не хватает... function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; var ServiceChannel: JNotificationChannel; NotificationManager: JNotificationManager; Obj: JObject; NewIntent: JIntent; ncb: JNotificationCompat_Builder; ntf: JNotification; PendingIntent: JPendingIntent; begin Result := TJService.JavaClass.START_NOT_STICKY; ServiceChannel := TJNotificationChannel.JavaClass.init( StringtoJString('com.radio.one'), StrToJCharSequence('Public radio Channel'), TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT ); Obj := TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE); NotificationManager := TJNotificationManager.Wrap(Obj); NotificationManager.createNotificationChannel(ServiceChannel); PendingIntent := TJPendingIntent.JavaClass.getActivity( JavaService.getApplicationContext, 0, Intent, 0 ); ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); ncb.setContentTitle(StrToJCharSequence('PublicRadio')); // ncb.setTicker(StrToJCharSequence('Communications Service')); ncb.setSmallIcon(JavaService.getApplicationInfo.icon); ncb.setContentIntent(PendingIntent); ncb.setOngoing(True); ntf := ncb.build; JavaService.startForeground(StartId, ntf); end;
  14. Код найден в Интернете и он работает отлично на моем Андроид 8.1 Зачем у автора эта строка, непонятно... if TJBuild_VERSION.JavaClass.SDK_INT > TJBuild_VERSION_CODES.JavaClass.O Что-то связанно с открытием канала...
  15. Здравствуйте. Есть код службы переднего фона которая прекрасно работает на Андроид 8.1 Послала арк человеку у которого Андроид 7. Приложение падает после сплеш скрина. Я думаю что ошибка в последнем begin end. Телефона с Андроид 7 у меня нет. Не подскажите что там исправить? RAD 10.3 Спасибо. interface uses System.SysUtils, System.Classes, System.Android.Service, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNI.Support, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNIBridge, Androidapi.Jni; type TDM = class(TAndroidService) function AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; private { Private declarations } public { Public declarations } end; var DM: TDM; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; var ServiceChannel: JNotificationChannel; NotificationManager: JNotificationManager; Obj: JObject; NewIntent: JIntent; ncb: JNotificationCompat_Builder; ntf: JNotification; PendingIntent: JPendingIntent; begin Result := TJService.JavaClass.START_NOT_STICKY; if TJBuild_VERSION.JavaClass.SDK_INT > TJBuild_VERSION_CODES.JavaClass.O then begin // 28 > 26 ServiceChannel := TJNotificationChannel.JavaClass.init( StringtoJString('com.radio.one'), StrToJCharSequence('Public radio Channel'), TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT ); Obj := TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE); NotificationManager := TJNotificationManager.Wrap(Obj); NotificationManager.createNotificationChannel(ServiceChannel); PendingIntent := TJPendingIntent.JavaClass.getActivity( JavaService.getApplicationContext, 0, Intent, 0 ); ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); ncb.setContentTitle(StrToJCharSequence('PublicRadio')); // ncb.setTicker(StrToJCharSequence('Communications Service')); ncb.setSmallIcon(JavaService.getApplicationInfo.icon); ncb.setContentIntent(PendingIntent); ncb.setOngoing(True); ntf := ncb.build; end else begin // earlier notification code (worked under 10.2.3, targetting API 14) PendingIntent := TJPendingIntent.JavaClass.getActivity( JavaService.getApplicationContext, 0, Intent, 0 ); ntf := TJNotification.Create; ntf.icon := JavaService.getApplicationInfo.icon; ntf.setLatestEventInfo( JavaService.getApplicationContext, StrToJCharSequence('PublicRadio'), StrToJCharSequence('PublicRadioService'), PendingIntent); end; JavaService.startForeground(StartId, ntf); end; end.
  16. Я так поняла что в Androidapi.JNI.App надо метод переписать так: procedure startForeground(id: Integer; notification: JNotification; foregroundServiceType: Integer); cdecl; А какие следующие шаги чтобы код службы увидел это обновление? Спасибо.
  17. Может как то по другому можно вызвать службу в RAD10.4.1 для API29? Мне просто надо запустить Foreground службу. Больше от нее ничего не требуется...
  18. Спасибо. Подскажите как правильно добавить третий параметр в код запуска службы? JavaService.startForeground(StartId, ntf, 2);//too many actual parametrs В выпадающем списке нет варианта с тремя параметрами. Рис. В манифесте <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
  19. Короче не работает. Служба стартует, но она не foreground. Если свернуть приложение, служба перестает работать через пару минут. Предложенное выше решение устарело и не подходит т.к. оно работает для sdk 28. Гугл маркет требует с августа sdk 29. Таким образом как создать простую foreground службу в 10.4.1 остаётся не решенным вопросом.
  20. Слетела галочка в разрешениях в опциях проекта foreground service. Однако установка ее не помогла - нет значка службы в трее... P.S. Странно значка нет, а в запущенных приложениях служба есть. В 10.3.3 был значок в трее...
  21. После компиляции проекта в 10.4.1 служба перестала запускаться, хотя сам проект запускается без проблем и работает. Дебаггер с моим телефоном Readme 5A Андроид 8.1 не работает. Нет значка службы вверху в трее. Может кто из специалистов глянет и поправит код службы чтобы запускалась... 1. Тут проект. Прошу прощения за размер. SO файлы большие. Скачать: BASS плеер 2. Папка delphi82 копируется сюда: C:\Users\Lena\Documents\Embarcadero\Studio\Projects Соответственно пути в опциях проекта для BASS: C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82\bass-android-test\arm64-v8a; C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82\bass-android-test\armeabi; C:\Users\Lena\Documents\Embarcadero\Studio\Projects\delphi82\bass-android-test\armeabi-v7a 3. Открыть ProjectGroupPublicRadio.groupproj Run PublicRadio Спасибо.
  22. Ingalime

    [Android]RAD10.4.1

    После установки любой студии в папке, например: C:\Users\Public\Documents\Embarcadero\Studio\20.0\PlatformSDKs\android-sdk-windows\tools можно было запустить окно как на прилагаемом рисунке. После установки RAD10.4.1 папки PlatformSDKs нет. Хотя при инсталляции было указано, чтобы Андроид был установлен. Как вызвать это окно для 10.4.1? Спасибо.
  23. Ingalime

    Android Services 64 бит

    Здравствуйте. Такой вопрос: Создаю Андроид сервис выбор платформы -> 64 бит. Делаю Build. В хост приложение Андроид 64 бит добавляю этот сервис. Согласно описанию должен добавиться jar файл: The Java archive, <project_name>.jar file. The jar file is added to the Libraries node on the Project Manager, under the Android target platform. Да, этот файл <project_name>.jar добавляется в Libraries. Однако он почему-то попадает в Libraries хост приложения где таргет Андроид 32. В таргете Libraries Андроид 64 его нет. Это так и должно быть?
  24. Подскажите, пожалуйста, ответы на такие вопросы: 1. Для публикации в маркете SDK должен быть равен 29 не ниже? 2. В приложении присутствует пункт меню Donate (Помощь проекту). При переходе в этот пункт меню просто открывается форма с номером банковской карты на которую можно перевести пожертвование и есть ссылка на сайт банка этой банковской карты. Не является и это каким то нарушением для гугул маркета? Спасибо.
  25. Так и планируется. На сайте уже работающего интернет радио, просто будет дополнительно ссылка для скачивания арк, для тех кто захочет иметь это радио на телефоне в удобном интерфейсе... Поэтому гугл плей с его всякого рода ограничениями особо и не нужен. Можно и напрямую выложить арк на сервере радио, но врядли подьзователя порадуют при установки сообщения типа: Внимание опасно! Включите установку из неизвестных источников! И т.п.
×
×
  • Создать...