Перейти к содержанию
  • Регистрация
  • 0
tromani

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

Вопрос

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 эмодзи.

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

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

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


  • Похожий контент

    • От Дмитрий Потапов
      Задался идеей написания IPTV приложения "для себя", в котором при желании смог бы реализовать что-то необходимое и удалить то, что не нужно.
      Собственно вопрос в другом: Я написал простое приложение, которое отлавливает коды кнопок с пульта, приложение по сути самое банальное, использует OnKeyDown и OnKeyUp (чисто для теста). И по нажатию на кнопку на пульте высылает например в Memo или ListBox Информацию о нажатой кнопке (включая ее код).
      Но суть в том, что далеко не все кнопки таким образом распознаются. Для примера:
      Кнопки громкости, назад, домой, увеличение\уменьшение громкости, стрелки(влево, вправо, вверх, вниз) и центральная кнопка (по совместительству OK).
      Цифры все определяются, как одна - 0
      Кнопки, которые не определяются (не срабатывает событие, ибо если был бы неизвестен код, то думаю, в таком случае получил бы все, кроме кода кнопки), но по нажатию кнопки, которая не определяется приложением - ничего не происходит вообще.
       
      Вопрос: Есть ли возможность как-то "научить" приложение распознавать эти кнопки? (Я где-то читал, может даже и здесь, что это все так реализовано именно на уровне самого FireMonkey, будто этих кнопок вообще не существует).
      Если эта тема уже поднималась на форуме или вопрос очень просто решается - извиняюсь)
    • От slav_z
      Показать/скрыть сенсорную клавиатуру Windows.
      unit Lib.Keyboard; interface uses Winapi.Windows, Winapi.ActiveX, System.Win.ComObj, FMX.Forms, FMX.Platform.Win; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); implementation const CLSID_UIHostNoLaunch: TGUID = '{4CE576FA-83DC-4F88-951C-9D0782B4E376}'; type ITipInvocation = interface ['{37C994E7-432B-4834-A2F7-DCE1F13B834B}'] procedure Toggle(WND: HWND); safecall; end; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); var TipInvocation: ITipInvocation; begin OleCheck(CoCreateInstance( CLSID_UIHostNoLaunch,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, ITipInvocation,TipInvocation)); TipInvocation.Toggle(FormToHWND(Form)); end; end. C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe - Сенсорная клавиатура Windows. В Windows 10 простой запуск уже не работает.
      Кто как делал? Очень интересны примеры кода.
       
    • От genakust
      добрый день,
      у меня есть несколько TabItems in FMX- TabControl (как на вложенной картинке) один из которых заполняется динамически:
      FindAndDeleteItemContext; frameIndex:= GetFrameIndexByText(item); {factory} FFramesFactory:= TFramesFactory.DefaultFactory; {Index-> Frame} aktFrame:= FFramesFactory.GetFrame(frameIndex); {add to layout} aktFrame.Parent:= LyContent; aktFrame.Align:= TAlignLayout.Client; LyContent.AddObject(aktFrame); {open tab} ActionToContentTabExecute(Sender); я пытаюсь найти фрейм и удалить его только из TabItem но не как Object обследующим способом:
      procedure Txxx.FindAndDeleteItemContext; var   i: Integer; begin   for i:= 0 to Pred(LyContent.ComponentCount) do   begin     if LyContent.Controls.Items[i] is TFrame then       LyContent.RemoveObject(i);   end; end но почему- то LyContent.ComponentCount всегда равен 0.
      Подскажите пожалуйста что неправильно?
      Спасибо.

    • От genakust
      Здравствуйте,
      я создал свой ListBoxItem (FMX) который выглядит следующим образом:

      затем я добавил Items динамически в ListBox и получилось следующее:

      Когда я запускаю программу на Windows 10 и выбираю мышкой Item он селектируется, а если запускаю на Андроид- таблете, то я не могу выбрать (селектировать) Item.
      Подскажите пожалуйста, какие могут быть причины длы такого поведения.
      Заранее спасибо.
       
    • От Mohamed BEN AMMAR
      hello 
      i'm using delphi fmx for building android App
      i have this code for Activating The WI-FI icon from android device:
      This could be found here .
      =========== code ==================
      uses
        Androidapi.Helpers,
        Androidapi.JNI.JavaTypes,
        Androidapi.JNI.GraphicsContentViewText,
        Androidapi.JNIBridge,
        Androidapi.JNI.WifiManager;
        procedure SetWifiEnabled (AEnable: Boolean); var   Obj: JObject;   WifiManager: JWifiManager; begin   Obj: = SharedActivityContext.getSystemService (TJContext.JavaClass.WIFI_SERVICE);   if Obj = nil then     Exit;     WifiManager: = TJWifiManager.Wrap ((Obj as ILocalObject) .GetObjectID);   WifiManager.setWifiEnabled (AEnable); end; 
       
       My question is About Activating Android location:
        Is it possible to activate the service location icon from android device
       programatically without using the Location or TLocationSensor component ....?
      however I know exactly that google has been Deactivate this API since android "4" just for security reasons .....
      but i have seen many apps in playstore can activate the service without using 
      this code here ask the user for activate the location manually .... procedure TForm1.GPSSettings; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.Create; Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; in other versions like lolipopup can show just the Allow Permission system dialog timer ....( Asking the user for Allowing this App to Activate the service location ......) 
      I have an android device with lolipopup version and i try to execute the location EMBARCADERO sample but 
      this one can not activate the service location ICON even  my device show me the Allow permission dialog where i choose yes allow
      with never ASK....
      Finally ,  I like the WI-FI code above .....
      and i'm wondering if someone here can do this task for me (i need a unit as the WI-FI code above which can offer me
      the option to activate the Service Location ICON )
      I'm ready to paid for that task .....
       
      Sincerelly: Brave.
    • От FREEFAR
      Всем доброго времени суток. 
      Казалось бы. Во время разработки и перед тем как подписали приложение сертификатом Distribution, пуши приходили норм. Но после того как прошли аудит Apple пуши куда-то пропали. FCM возвращал ошибку InvalidRegistration.
      Оказалось все достаточно просто. На сервере с которого мы отправляем пуш, В php скрипте, который отправляет пуши надо выставить
      sandbox = false
      Ура! Всем удачи)
    • От PavelS
      Здравствуйте! Начал изучать FireMonkey  и столкнулся с тем, что TBitmap не поддерживает размер изображения больше 8132, кажется. Т.е. большие размеры рисунка он грузит, но за счёт потери качества, размер пиксела растёт, а размер рисунка по оси всё равно не превышает 8132. В то же время в простом дельфи можно грузить и работать с гораздо большими размерами, например, один из файлов имеет размер 61216 х 1486 точек. Подскажите пожалуйста, есть ли возможность работать с большими файлами в FireMоnkey и как это можно организовать? Программа создаётся для работы только в Windows.
    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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