Notification.Builder를 정확히 사용하는 방법 noficitations (notification.setLatestEventInfo ())에 더

noficitations (notification.setLatestEventInfo ())에 더 이상 사용되지 않는 메서드를 사용하고 있음을 발견했습니다.

Notification.Builder를 사용하라는 메시지가 표시됩니다.

  • 어떻게 사용하나요?

새 인스턴스를 만들려고하면 다음과 같은 메시지가 표시됩니다.

Notification.Builder cannot be resolved to a type



답변

이것은 API 11에 있으므로 3.0 이전 버전으로 개발하는 경우 이전 API를 계속 사용해야합니다.

업데이트 : NotificationCompat.Builder 클래스가 지원 패키지에 추가되었으므로이를 사용하여 API 레벨 v4 이상을 지원할 수 있습니다.

http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html


답변

Notification.Builder API 11 또는 NotificationCompat.Builder API 1

이것은 사용 예입니다.

Intent notificationIntent = new Intent(ctx, YourClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx,
        YOUR_PI_REQ_CODE, notificationIntent,
        PendingIntent.FLAG_CANCEL_CURRENT);

NotificationManager nm = (NotificationManager) ctx
        .getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = ctx.getResources();
Notification.Builder builder = new Notification.Builder(ctx);

builder.setContentIntent(contentIntent)
            .setSmallIcon(R.drawable.some_img)
            .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.some_big_img))
            .setTicker(res.getString(R.string.your_ticker))
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .setContentTitle(res.getString(R.string.your_notif_title))
            .setContentText(res.getString(R.string.your_notif_text));
Notification n = builder.build();

nm.notify(YOUR_NOTIF_ID, n);


답변

여기에 선택된 답변 외에도 Source TricksNotificationCompat.Builder클래스에 대한 샘플 코드가 있습니다 .

// Add app running notification  

    private void addNotification() {



    NotificationCompat.Builder builder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Notifications Example")
            .setContentText("This is a test notification");

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(contentIntent);

    // Add as notification  
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(FM_NOTIFICATION_ID, builder.build());
}

// Remove notification  
private void removeNotification() {
    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    manager.cancel(FM_NOTIFICATION_ID);
}  


답변

알림 빌더는 Android API 레벨 11 이상 (Android 3.0 이상)에만 적용됩니다.

따라서 Honeycomb 태블릿을 대상으로하지 않는 경우 알림 작성기를 사용하지 말고 다음 예제 와 같은 이전 알림 생성 방법을 따라야 합니다.


답변

android-N 업데이트 (2016 년 3 월)

자세한 내용은 알림 업데이트 링크를 참조하십시오.

  • 직접 회신
  • 번들 알림
  • 사용자 정의보기

Android N을 사용하면 유사한 알림을 번들로 묶어 단일 알림으로 표시 할 수도 있습니다. 이를 가능하게하기 위해 Android N은 기존 NotificationCompat.Builder.setGroup()방법을 사용합니다 . 사용자는 각 알림을 확장하고 알림 창에서 개별적으로 각 알림에 대해 응답 및 해제와 같은 작업을 수행 할 수 있습니다.

이것은 NotificationCompat를 사용하여 알림을 보내는 간단한 서비스를 보여주는 기존 샘플입니다. 사용자가 읽지 않은 각 대화는 고유 한 알림으로 전송됩니다.

이 샘플은 Android N에서 사용할 수있는 새로운 알림 기능을 활용하도록 업데이트되었습니다.

샘플 코드 .


답변

알림을 빌드하는 데 문제가있었습니다 (Android 4.0 이상용으로 만 개발).
이 링크 는 내가 뭘 잘못하고 있는지 정확히 보여주고 다음과 같이 말합니다.

Required notification contents

A Notification object must contain the following:

A small icon, set by setSmallIcon()
A title, set by setContentTitle()
Detail text, set by setContentText()

기본적으로 나는 이것들 중 하나를 놓치고 있었다. 이 문제를 해결하기위한 기초로서, 최소한이 모든 것이 있는지 확인하십시오. 바라건대 이것은 다른 사람의 두통을 덜어 줄 것입니다.


답변

누구에게나 도움이되는 경우를 대비하여 … 새로운 오래된 API에 대해 테스트 할 때 지원 패키지를 사용하여 알림을 설정하는 데 많은 문제가있었습니다. 나는 그들이 최신 장치에서 작동하도록 할 수 있었지만 이전 장치에서 오류 테스트를 받게되었습니다. 마침내 나를 위해 일하게 된 것은 알림 기능과 관련된 모든 가져 오기를 삭제하는 것입니다. 특히 NotificationCompat 및 TaskStackBuilder. 처음에 내 코드를 설정하는 동안 지원 패키지가 아닌 최신 빌드에서 추가 된 가져 오기를 수행하는 것 같습니다. 그런 다음 나중에 이클립스에서 이러한 항목을 구현하려고 할 때 다시 가져 오라는 메시지가 표시되지 않았습니다. 이해가 되길 바라며 다른 사람에게 도움이되기를 바랍니다. 🙂