Использование поля largeIcon класса Notification, например уведомления Gmail - PullRequest
0 голосов
/ 22 июня 2011

Я разрабатываю приложение, которое показывает уведомление для входящего сообщения. Я хотел бы, чтобы уведомление отображало растровое изображение, а не значок приложения. Я полагаю, что могу сделать это только в Honeycomb, используя поле largeIcon в классе Notification. Я использую отражение, чтобы определить, работает ли на устройстве Honeycomb, и если да, то я заполняю поле largeIcon растровым изображением, например:

Notification notification = new Notification(icon, ticketText, when);

String sClassName = "android.app.Notification";
        try {
            @SuppressWarnings("rawtypes")
            Class classToInvestigate = Class.forName(sClassName);
            String strNewFieldName = "largeIcon";
            Field largeIconField = classToInvestigate.getField(strNewFieldName);

            largeIconField.set(notification, photoBitmap);

            Log.e(TAG, "Notification bitmap worked properly");
        } catch (ClassNotFoundException e) {
            Log.e(TAG, "Notification bitmap error; ClassNotFoundException: " + e);
        } catch (NoSuchFieldException e) {
            Log.e(TAG, "Notification bitmap error; NoSuchFieldException: " + e);
        } catch (SecurityException e) {
            Log.e(TAG, "Notification bitmap error; SecurityException: " + e);
        } catch (Exception e) {
            Log.e(TAG, "Notification bitmap error; UnknownException: " + e);
        }

Согласно моему журналу, исключение не генерируется при отображении уведомления. Однако растровое изображение не отображается в уведомлении, только значок приложения.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 24 июля 2013

Вы пробовали Notification.BigPictureStyle?Это должно сделать работу.http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html

0 голосов
/ 27 августа 2011

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

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ...
}
...