• 0
Alex Bozhko

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

Вопросы

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

 

Спасибо.

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


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

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

  • 0

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

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


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

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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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 код выше может не работать из-за жестокого кеширования.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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