NotificationCompat.Builder не работает в Gingerbread

Я пытаюсь использовать класс NotificationCompat.Builder в своем приложении. Следующий код отлично работает на телефоне с ICS, но не на Gingerbread. Насколько я понимаю, разве библиотека поддержки не разрешает доступ к Builder с телефонов уровня API 4? Я делаю что-то принципиально неправильное?

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

person vosmith    schedule 05.11.2012    source источник


Ответы (1)


Вы должны указать намерение, которое будет срабатывать при нажатии на уведомление. В противном случае уведомление не будет отображаться на Gingerbread. Если вы не хотите запускать действие при нажатии на уведомление, вы можете просто передать пустое намерение следующим образом.

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
person Tomonari Ikeda    schedule 19.06.2013
comment
Пожалуйста, добавьте некоторые пояснения - person Shrey Gupta; 19.06.2013
comment
Некоторое время я был в тупике, почему мои уведомления внезапно перестали работать в старых API, и оказалось, что мне нужно не только намерение, но и информация о тикере, которую я сбросил при преобразовании. Спасибо. - person Abandoned Cart; 23.08.2013
comment
Невозможно использовать Intent.FLAG_ACTIVITY_NEW_TASK. Это константы из PendingIntent. - person wtk; 07.12.2017