• 0
Alex Bozhko

TNotificationCenter. Можно ли изменить иконку?

Вопрос

Собствено, сабж. Можно ли изменить пиктограмму для нотификатора вообще и в Андроид в частности? По умолчанию,  показывается иконка приложения, а мне надо показывать несколько разных иконок.

 

Спасибо.

AlexG понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 ответов на этот вопрос

  • 0

Пока вижу только такой вариант: Нужно лезть в исходники и там менять, конкретно вот здесь "FMX.Notification.Android.pas", предположительно 132 и 137 строчки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Похоже, это просто заглушки.

 

GetDefaultIcon даже не вызывается...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

У них там оч много заглушек ))

Советую поковырять android sdk. Я обычно так делаю ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Коллеги, есть ли успехи в решении этого вопроса?

Поделитесь опытом плиз.

Rusland понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
В 02.09.2016 в 09:59, Pax Beach сказал:

Коллеги, есть ли успехи в решении этого вопроса?

Поделитесь опытом плиз.

Чтобы не лезть в исходники, можно сделать так для Android:

1. В Deployment : добавляешь нужную картинку X.png и устанавливаешь у картинки "Remote Path" "res\drawable\";

2. В коде перед созданием уведомления добавляешь:

const
    IMAGE = 'drawable/X'; //расширение картинки не указывается
var
    lId : Integer;
begin
    lId := TAndroidHelper.Context.getResources().getIdentifier(
        StringToJString(IMAGE),
        StringToJString('drawable'),
        TAndroidHelper.Context.getPackageName);
    TAndroidHelper.Context.getApplicationInfo.icon := lId; //именно отсюда потом берется Id картинки для локального уведомления

*Проверял на Android 4.4, в более поздних версиях могут быть различия, версия IDE =  Delphi 10 Seattle.

**В прошивках типа MIUI код выше может не работать из-за жестокого кеширования.

Rusland, AlexG и zairkz понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, Fedor K сказал:

Чтобы не лезть в исходники, можно сделать так для Android:

1. В Deployment : добавляешь нужную картинку X.png и устанавливаешь у картинки "Remote Path" "res\drawable\";

2. В коде перед созданием уведомления добавляешь:

По поводу кэширования ресурсов, наверняка есть метод, который этим делом управляет, не разбирался пока.

В приведенном примере иконка изменится у всего приложения везде?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 1

Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление).

Чтобы не влиять на другой функционал, достаточно сделать следующее:

    //запоминаем ид по умолчанию
    lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon;
    //устанавливаем нашу кастомную иконку
    TAndroidHelper.Context.getApplicationInfo.icon := lId;
    //создаем локальное уведомление
    NotificationCenter.PresentNotification(lNotification);
    //возвращаем обратно
    TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId;

п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.

Test.png

Kitty, Rusland, AlexG и 2 другим понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А есть способ как в Windows это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу