Skip to content
View in the app

A better way to browse. Learn more.

FGX Native

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Изменение поведения vkHarwareBack на 16 андроиде и закрытие приложения при двойном тапе не работает

  • Status: Reported
  • Priority: Major
  • Resolution: Unresolved
  • Platform: Android
  • Affects version 1.20.1.0

По умолчанию FGX Native перехватывает нажатие системной кнопки vkHardwareBack на уровне формы. По умолчанию, если такая кнопка прилетает форме, то форма закрывается. Чтобы переопределить это поведение, нужно повесить обработчик на событие TfgForm.OnKey, оно вызывается на нажатие и отпускание базовых кнопок. В нем нужно поймать кнопку vkHardwareBack  (например на главной форме), чтобы запретить закрытие формы и сообщить системе, что вы сами выполняете обработку этой кнопки, путем проставления значения в параметр AHandled = True. Пример ниже демонстрирует предотвращение закрытия текущей формы при нажатии на кнопку vkHardwareBack.

procedure TfmMain.fgFormKey(Sender: TObject; const AKey: TfgKey; var AHandled: Boolean);
begin
  if (AKey.Action = TfgKeyAction.Up) and (AKey.Code = vkHardwareBack) then
    AHandled := True;
end;

Собственно, если вы хотите сделать закрытие по двойному тапу на кнопку Back, то нужно зафиксировать время первого нажатия и на втором проверять сколько времени прошло:

procedure TfmMain.fgFormKey(Sender: TObject; const AKey: TfgKey; var AHandled: Boolean);
const
  DoubleTapDuration = 2000; // msec
begin
  if (AKey.Action = TfgKeyAction.Up) and (AKey.Code = vkHardwareBack) then
  begin
    AHandled := True;
    if FBackPressed + DoubleTapDuration > MilliSecondOfTheDay(Now) then
      AHandled := False // Оставляем поведение по умолчанию - закрытие формы.
    else
    begin
      FBackPressed := MilliSecondOfTheDay(Now);
      TfgToast.Show('Нажмите ещё раз для выхода');
    end
  end;
end;

 

Этот трюк теперь не работает на 16 андроиде. В варианте с изменением файла манифеста (добавление android:enableOnBackInvokedCallback="false") работает, как и ожидается.

User Feedback

Recommended Comments

There are no comments to display.

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.