2012-11-05 109 views
1

我試圖在我的應用程序中使用NotificationCompat.Builder類。以下代碼在ICS電話上運行得非常好,但不是薑餅。根據我的理解,支持庫是否允許從低至API級別4的手機訪問Builder?我在做一些根本性錯誤?NotificationCompat.Builder不工作在薑餅

public class MainActivity extends Activity implements OnClickListener { 
NotificationCompat.Builder builder; 
NotificationManager nm; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     builder = new NotificationCompat.Builder(this); 
     nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

     builder.setContentTitle("Test Notification") 
     .setContentText("This is just a test notification") 
     .setTicker("you have been notified") 
     .setSmallIcon(R.drawable.ic_stat_example) 
     .setWhen(System.currentTimeMillis()); 

     findViewById(R.id.btn_notify).setOnClickListener(this); 
    } 

    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     if(arg0.getId() == R.id.btn_notify){ 
     nm.notify(1, builder.build()); 
     } 
    } 
} 

回答

8

您必須提供在點擊通知時將觸發的意圖。否則,通知將不會顯示在薑餅上。 如果您不想在單擊通知時啓動活動,則可以按照以下方式傳遞空的Intent。

Intent intent = new Intent(); 
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK); 

builder.setContentTitle("Test Notification") 
    .setContentText("This is just a test notification") 
    .setTicker("you have been notified") 
    .setSmallIcon(R.drawable.ic_stat_example) 
    .setWhen(System.currentTimeMillis()) 
    .setContentIntent(pendingIntent); // add this 
+0

請加一些說明 –

+0

當然!解釋補充說。 –

+0

我被困了一段時間,爲什麼我的通知突然停止在較舊的API中工作,事實證明我不僅需要該意圖,而且還需要我在轉換中丟棄的股票信息。謝謝。 – LoungeKatt