2011-06-21 65 views
0

我正在開發一個應用程序,顯示傳入消息的通知。我希望通知顯示一個位圖而不是應用程序圖標。 我相信我只能在Honeycomb中使用Notification類中的largeIcon字段來做到這一點。 我使用反射來確定設備運行蜂窩,如果是我填充largeIcon場與位圖,就像這樣:使用通知類的largeIcon字段,例如Gmail通知

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); 
     } 

根據我的日誌,沒有異常被解僱時通知顯示器。但是,位圖不會顯示在通知上,只有應用程序圖標。

任何想法?

+0

我應該給更多的上下文嗎?這是使用反射的正確方法嗎? – howettl

回答

0

這聽起來像您的代碼不工作,並且正在使用非Honeycomb通知。試試這個來檢測Honeycomb或更高版本:

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