2013-04-16 5 views
57

사례 연구 : Android에서 알림을 추가하는 프로그램이 필요합니다. 알림을 클릭하면 내 두 번째 활동으로 연결됩니다.알림 표시 안 함

나는 코드를 만들었습니다. 알림이 작동해야하지만 어떤 이유로 작동하지 않습니다. Notification이 전혀 표시되지 않습니다. 내가 뭘 놓치고 있는지 모르겠다. 이러한 파일의

코드 :

 Notification n = new Notification.Builder(this) 
       .setContentTitle("New mail from " + "[email protected]") 
       .setContentText("Subject") 
       .setContentIntent(pIntent).setAutoCancel(true) 
       .setStyle(new Notification.BigTextStyle().bigText(longText)) 
       .build(); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
     // Hide the notification after its selected 

     notificationManager.notify(0, n); 
+0

http://developer.android.com/guide/topics/ui/notifiers/notifications.html를 참조하십시오. 당신은 * 작동하지 않는 것에 대해 언급하지 않습니다. 실제로, 당신은 무언가가 작동하지 않는다는 것을 언급하지 않습니다. '활동'이 시작되지 않았습니까? '알림 '이 보이지 않습니까? – slinden77

+1

@ dmmh 내 질문에 내 문제는 무엇입니까! 그리고 나는 그 질문에 잘못된 것을 발견하지 못했습니다. 제 질문은 문제에 관한 것이 었습니다. 전문가가 아니라면 찌를 필요가 없습니다! 그리고 tato469의 대답은 괜찮 았습니다. –

+1

나는이 사이트의 목적이 문제를 해결할 수있는 것이 아니라 다른 사람들도 문제에 대한 해결책을 찾을 수 있다는 것을 지적합니다. 나는 파고하지 않고있다. 죄송합니다. 귀하의 감정에 상처를 입히지 않아서 죄송 합니다만, 귀하의 질문이 잘못되어 답변이 잘못되어이 같은 모든 오해의 소지가있는 정보가 귀하가 설명하는 것과 동일한 문제가있는 다른 초보 프로그래머로 이어져 작업을하지 않는 솔루션을 시도합니다 귀하가 제공 한 코드를 기반으로합니다. 그것은 내가 전문가인지 아닌지 상관 없습니다. 특히 내가 옳은 이래로, 당신의 질문은 모호하며, 다른 대답은 잘못되었습니다. – slinden77

답변

252

@dmmh는 아이콘이 없으면 작동하지 않는다고 말했습니다. 그래서

.setSmallIcon (R.drawable.icon)

오레오 전에 완벽하게 실행 프로젝트에 코드를 수정 한 후.

그러나 폼 오레오 알림 NotificationChannel 및되지 않습니다 NotificationCompat.Builder(this) 필요, 그것을 시도 :

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

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


     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
      NotificationChannel channel = new NotificationChannel("notify_001", 
        "Channel human readable title", 
        NotificationManager.IMPORTANCE_DEFAULT); 
      mNotificationManager.createNotificationChannel(channel); 
     } 

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

이 문서가 아닙니다. 왜 신이 주신 지요? 방금 2 시간 동안 내 목숨을 잃어 버렸고 결코 다시는 돌아 오지 않을 것입니다. – steve

+22

당신은 내 대답을 받아 들일 수 있었을 것입니다. 괜찮습니다.) – slinden77

+0

@steve : 나는 이것을 알아 내기 전에 한참 전에 하루를 잃었습니다. D – slinden77

1

나는 당신이

addAction(int icon, CharSequence title, PendingIntent intent) 

는 사실 @ tato469에 의해 답변이 정확하지 않는 것 여기 Add Action

+1

메소드'addAction()'은'Notification.Builder'에서 사용할 수 없습니다. – slinden77

+0

존재하지만 더 이상 사용되지 않습니다. 대신에,'Notification.Action.Builder'로 생성 할 수있는'Action' 인스턴스를 전달할 수 있습니다. P.S., Google은 버그를 패치하고 더 나은 호환성을 제공하기 때문에 항상 Compat 대안 (즉, NotificationCompat)을 사용하십시오. –

+0

조치를 지정하지 않으려면 빌더와 함께 '.setContentIntent (null)'을 사용하십시오. –

46

보면 잊지 생각합니다. 다시 말하면, 당신의 질문은 지나치게 모호합니다. 무엇이 잘못되었거나 일하지 않는지 언급하지 않았기 때문입니다.

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

아이콘을 제공하지 않아 알림이 표시되지 않습니다. SDK 설명서에 필수 사항은 언급되어 있지 않지만 실제로는 매우 많이 사용되고 사용자 Notification이 없으면 표시되지 않습니다.

addAction은 4.1 이후에만 제공됩니다. 그 전에 PendingIntent을 사용하여 Activity을 실행하십시오. PendingIntent을 지정하는 것으로 보이므로 문제는 다른 곳에 있습니다. 논리적으로, 그것이 누락 된 아이콘이라고 결론을 내리지 않으면 안됩니다.

+0

그 문제가 발견되었습니다. 그러나 적절한 답장을 보내 주셔서 감사합니다. 도와 주셔서 정말 고맙습니다. –

+0

당신은 addAction이 4.1 이후에만 사용 가능하다고 말했지 만 잘못되었습니다. 2.3에서 사용했습니다. 참조 설명서는 알림이 아닌 버튼에 대해 이야기합니다. "Android 4.1 이전의 플랫폼에는 작업 버튼이 표시되지 않습니다." 여기 [AddAction] (http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#addAction%28int,%20java.lang.CharSequence,%20android.app)에서 확인할 수 있습니다. .PendingIntent % 29)가 android.support.v4.app에 포함되어 있습니다. –

+0

OP가 당신이 제안하는 것처럼'NotificationCompat.Builder'가 아니라'Notification.Builder'를 사용하고 있습니다. 호환성 라이브러리가있어 사용할 수 있다고해서 정상적인 API에서이 함수가 사용 가능하다는 것을 의미하지는 않습니다. 귀하가 제공하는 링크는 실제로 이것을 규정합니다. 이 질문은 예제에서 볼 수 있듯이'Notification.Builder'와 분명히 관련되어 있습니다. 그리고 호환성 라이브러리는 아마도 4.1이 사용 가능할 때만이 기능을 포함했을 것입니다. 귀하의 대답은 오해의 소지가 있습니다. 왜냐하면 2.3 이후로 이용 가능하다고 제안했기 때문입니다. – slinden77

13

을 당신은 작은 아이콘이 누락되었다. 나는 똑같은 실수를 저질렀고 위의 단계는 그것을 해결했다.

는 공식 문서에 따라 경찰 : setContentTitle()

  • 상세 설정 setSmallIcon()

  • 제목 설정

    1. 작은 아이콘, : 는 Notification 객체는 다음을 포함해야 텍스트, 설정 : setContentText()

    2. Android 8.0 (API 레벨 26) 이상에서 유효한 알림 채널 ID는 setChannelId()으로 설정되거나 채널을 만들 때 NotificationCompat.Builder 생성자에서 제공됩니다.

    당신이 질문을 할 때 더 간결 해보세요