Решаем проблему cannot find symbol при связке Qt Notification в Андройд приложении

Страшный заголовок получился да? Вот и я вчера тыкался в мозгом в документацию по Qt и Android изискивая причину косяка. Суть? Берём простой пример из Qt - просто выплюнуть уведомления и получаем ошибку компиляции Java! Как так?

Решаем проблему cannot find symbol при связке Qt Notification в Андройд приложении


Вот код: Прям из примера:
Код JAVA:
  1.  
  2. package org.neochapay.example;
  3.  
  4. import android.app.Notification;
  5. import android.app.NotificationManager;
  6. import android.content.Context;
  7.  
  8. public class NotificationClient extends org.qtproject.qt5.android.bindings.QtActivity
  9. {
  10. private static NotificationManager m_notificationManager;
  11. private static Notification.Builder m_builder;
  12. private static NotificationClient m_instance;
  13.  
  14. public NotificationClient()
  15. {
  16. m_instance = this;
  17. }
  18.  
  19. public static void notify(String s)
  20. {
  21. if (m_notificationManager == null) {
  22. m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
  23. m_builder = new Notification.Builder(m_instance);
  24. m_builder.setSmallIcon(R.drawable.icon);
  25. m_builder.setContentTitle("Notyfy example");
  26. }
  27.  
  28. m_builder.setContentText(s);
  29. m_notificationManager.notify(1, m_builder.build()); // < ошибка тут
  30. }
  31. }
  32.  
Оказалось ошибка была в выборе API Level. Вызов Notification.Builder.build() введена только в API Level 19 он же Android 4.4+ и я просто получил рекомендацию перевестись на этот уровень... Но чёт как то не хотелось терять 80% пользователей приложения и решение было просто - найти аналог данной функции в API Level 13.
Итоговое решение такое:
Заменяем ошибочную строчку на:
Код JAVA:
  1.  
  2. m_notificationManager.notify(1, m_builder.getNotification());
  3.  
Радость солнце ананасы :)
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay