使用Notification类的largeIcon字段,例如Gmail通知

时间:2011-06-21 21:02:44

标签: android reflection notifications android-3.0-honeycomb

我正在开发一个应用程序,显示传入消息的通知。我希望通知显示位图而不是应用程序图标。 我相信我只能使用Notification类中的largeIcon字段在Honeycomb中执行此操作。 我正在使用反射来确定设备是否正在运行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 :(得分:0)

听起来您的代码无效,并且正在使用非Honeycomb通知。试试这个以检测Honeycomb或更晚:

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

答案 1 :(得分:0)

您是否尝试过Notification.BigPictureStyle?它应该做的工作。 http://developer.android.com/reference/android/app/Notification.BigPictureStyle.html