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

NOTIFICATION_SERVICE перестает работать с андроид 5.0


tromani

Вопрос

uses

  Androidapi.JNI.App, Androidapi.JNI.JavaTypes, AndroidApi.JniBridge;

procedure GetNotificationManager(var NfMn: JNotificationManager);

var

  NotManObj : JObject;

begin

  NotManObj:=SharedActivity.getSystemService(TJActivity.JavaClass.NOTIFICATION_SERVICE);
  NfMn:=TJNotificationManager.Wrap((NotManObj as ILocalObject).GetObjectID);

end;

 

для андроидов до 5.0 все ок

начиная с 5.0 вылетает - "в приложении произошла ошибка" и досвиданья

причем это происходит на многих вариантах getSystemService

может кто знает в чем дело, я гуглил гдето встречал обсуждение но сечас найти чтото не могу, может знаете как быть

путем  разбиения на части выявил что проблема в

(NotManObj as ILocalObject).GetObjectID 

этом куске - аксесс виолатион имеем

Изменено пользователем tromani
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Необходимо использовать 

TJContext.JavaClass.NOTIFICATION_SERVICE

вместо

TJActivity.JavaClass.NOTIFICATION_SERVICE

Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+):

function GetNotificationService: JNotificationManager;
var
  NotificationServiceNative: JObject;
begin
  NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE);
  Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID);
end;

 

Ссылка на комментарий
  • 0
  • Администраторы

Это связано со старой ошибкой Google NDK, которая приводит к AV, при попытке взять константу, объявленную в базовом классе, через наследуемый. 

Поэтому все константы нужно брать из того, класса, где они объявлены первоначально, а не в наследуемых.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...