[android] Android 알림이 표시되지 않음

Android에 알림을 추가 할 프로그램이 필요합니다. 누군가 알림을 클릭하면 두 번째 활동으로 연결됩니다.

코드를 설정했습니다. 알림이 작동해야하지만 어떤 이유로 작동하지 않습니다. 는 Notification전혀 표시되지 않습니다. 내가 뭘 놓치고 있는지 모르겠다.

해당 파일의 코드 :

Notification n = new Notification.Builder(this)
        .setContentTitle("New mail from " + "test@gmail.com")
        .setContentText("Subject")
        .setContentIntent(pIntent).setAutoCancel(true)
        .setStyle(new Notification.BigTextStyle().bigText(longText))
        .build();

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected

notificationManager.notify(0, n);



답변

아이콘 없이는 코드가 작동하지 않습니다. 따라서 setSmallIcon작동하려면 다음과 같이 빌더 체인에 호출을 추가하십시오 .

.setSmallIcon(R.drawable.icon)

Android Oreo (8.0) 이상

안드로이드 8은 설정의 새로운 요구 사항 소개 channelId를 사용하여 속성을 NotificationChannel.

private NotificationManager mNotificationManager;

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(mContext.getApplicationContext(), "notify_001");
Intent ii = new Intent(mContext.getApplicationContext(), RootActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, ii, 0);

NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
bigText.bigText(verseurl);
bigText.setBigContentTitle("Today's Bible Verse");
bigText.setSummaryText("Text in detail");

mBuilder.setContentIntent(pendingIntent);
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
mBuilder.setContentTitle("Your Title");
mBuilder.setContentText("Your text");
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setStyle(bigText);

mNotificationManager =
    (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);

// === Removed some obsoletes
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
    String channelId = "Your_channel_id";
    NotificationChannel channel = new NotificationChannel(
                                        channelId,
                                        "Channel human readable title",
                                        NotificationManager.IMPORTANCE_HIGH);
   mNotificationManager.createNotificationChannel(channel);
  mBuilder.setChannelId(channelId);
}

mNotificationManager.notify(0, mBuilder.build());


답변

실제로 ƒernando Valle의 대답은 정확 하지 않은 것 같습니다. 다시 말하지만, 귀하의 질문은 무엇이 잘못되었거나 작동하지 않는지 언급하지 않았기 때문에 지나치게 모호합니다.

귀하의 코드를 보면 Notification단순히 표시되지 않는다고 가정합니다 .

아이콘을 제공하지 않았기 때문에 알림이 표시되지 않습니다. SDK 문서에 필수라고 언급되어 있지 않지만 실제로는 매우 그렇기 때문에 Notification하나 없이는 표시되지 않습니다.

addAction4.1부터 만 사용할 수 있습니다. 이전에 당신은을 사용하는 것이 PendingIntent를 시작합니다 Activity. 을 지정하는 것처럼 보이 PendingIntent므로 문제는 다른 곳에 있습니다. 논리적으로, 누락 된 아이콘이라고 결론을 내릴 수 있습니다.


답변

작은 아이콘이 누락되었습니다. 나는 똑같은 실수를했고 위의 단계에서 그것을 해결했습니다.

공식 문서에 따르면 : 알림 개체는 다음을 포함해야합니다.

  1. setSmallIcon ()에 의해 설정된 작은 아이콘

  2. setContentTitle ()에 의해 설정된 제목

  3. setContentText ()에 의해 설정된 세부 텍스트

  4. Android 8.0 (API 레벨 26) 이상 에서 유효한 알림 채널 ID, setChannelId ()에 의해 설정 되거나 채널 생성시 NotificationCompat.Builder 생성자에 제공됩니다.

참조 http://developer.android.com/guide/topics/ui/notifiers/notifications.html를


답변

이로 인해 오늘은 당혹 스러웠지만 Android 9.0 (Pie)에서는 기본적으로 방해 금지 모드Android 8.1 (Oreo) 이전과 같이 알림을 무음 으로 처리 하지 않고 모든 알림을 숨길 수 있기 때문이라는 것을 깨달았습니다 . 알림에는 적용되지 않습니다.

나는 개발 장치에 DND를 사용하는 것을 좋아하므로 DND 설정으로 이동하여 알림을 숨기지 않고 음소거하도록 설정을 변경하면 문제가 해결되었습니다.


답변

Android 8.1 (Oreo) 이후 Android 버전에서는 알림을 표시하기 위해 알림 채널 을 반드시 만들어야합니다. Oreo + Android 용 앱에 알림이 표시되지 않는 경우 앱이 시작될 때 다음 함수를 호출해야합니다.

private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name,
       importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviours after this
        NotificationManager notificationManager =
        getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
   }
}


답변

나는 당신이 잊었다 고 생각합니다

addAction(int icon, CharSequence title, PendingIntent intent)

여기보기 : 작업 추가


답변

내 Android 앱에서 동일한 문제가 발생했습니다. 알림을 시험해 보았는데 Android 7.0 (Nougat) 시스템 을 실행하는 Android 에뮬레이터에는 알림이 표시되는 반면 Android 8.1 (Oreo) 이 설치된 휴대 전화에서는 실행되지 않았습니다 .

문서를 읽은 후 Android에는 알림 채널이라는 기능이 있으며이 기능이 없으면 Oreo 장치에 알림이 표시되지 않습니다. 다음은 알림 채널에 대한 공식 Android 문서 링크입니다.