마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

브로드캐스트리시버 클래스에서 통지사용하기

0 추천
public class PushServiceReceiver extends BroadcastReceiver {
Context mContext;
	public PushServiceReceiver() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		Log.d("DEBUG","알람 수신됨");
		mContext = context;
		NotificationManager nm = (NotificationManager)mContext.getSystemService(	mContext.NOTIFICATION_SERVICE);
				Notification notif = new Notification	(R.drawable.ic_launcher,"통지",System.currentTimeMillis());
				PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext, Loading.class), PendingIntent.FLAG_UPDATE_CURRENT);
				notif.flags=notif.flags|Notification.FLAG_AUTO_CANCEL;
				notif.contentIntent = pendingIntent;
				nm.notify(1234,notif);
				
		
	}

}

빨간부분에서 에러가납니다...

에러로그입니다.

알람을 울려서 리시버로 수신하면 PushServiceReceiver에서 통지를 띄워주는걸 하고있는데 잘안됩니당...

또 통지를 누르면 로딩화면으로 이동하는 동작을 수행하려하는데

어떻게해야하나요 ?

04-13 18:06:25.938: E/AndroidRuntime(19623): java.lang.RuntimeException: Unable to start receiver freevergroup.freevercard.activities.PushServiceReceiver: java.lang.IllegalArgumentException: contentView required: pkg=freevergroup.freevercard id=1234 notification=Notification(pri=0 icon=7f02000e contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 when=1428915985928 ledARGB=0x0 contentIntent=Y deleteIntent=N contentTitle=N contentText=N tickerText=2 kind=[null])
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2675)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.ActivityThread.access$1800(ActivityThread.java:175)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.os.Handler.dispatchMessage(Handler.java:102)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.os.Looper.loop(Looper.java:146)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.ActivityThread.main(ActivityThread.java:5602)
04-13 18:06:25.938: E/AndroidRuntime(19623): at java.lang.reflect.Method.invokeNative(Native Method)
04-13 18:06:25.938: E/AndroidRuntime(19623): at java.lang.reflect.Method.invoke(Method.java:515)
04-13 18:06:25.938: E/AndroidRuntime(19623): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
04-13 18:06:25.938: E/AndroidRuntime(19623): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
04-13 18:06:25.938: E/AndroidRuntime(19623): at dalvik.system.NativeStart.main(Native Method)
04-13 18:06:25.938: E/AndroidRuntime(19623): Caused by: java.lang.IllegalArgumentException: contentView required: pkg=freevergroup.freevercard id=1234 notification=Notification(pri=0 icon=7f02000e contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 when=1428915985928 ledARGB=0x0 contentIntent=Y deleteIntent=N contentTitle=N contentText=N tickerText=2 kind=[null])
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.os.Parcel.readException(Parcel.java:1469)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.os.Parcel.readException(Parcel.java:1419)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:347)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.NotificationManager.notify(NotificationManager.java:152)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.NotificationManager.notify(NotificationManager.java:116)
04-13 18:06:25.938: E/AndroidRuntime(19623): at freevergroup.freevercard.activities.PushServiceReceiver.onReceive(PushServiceReceiver.java:31)
04-13 18:06:25.938: E/AndroidRuntime(19623): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2660)
 
kkong_93 (680 포인트) 님이 2015년 4월 13일 질문

2개의 답변

0 추천
 
채택된 답변

 

두 가지 잘 못 작성한 부분이 있습니다.

1. 위 방식으로 Notification 생성하는 것은 deprecated 되었습니다 Notification.Builder로 Notification 객체를 만드는 것을 권장합니다.

2. 굳이 위 방식으로 해야 겠다면 setLatestEventInfo()  를 해서 contentView를 알려주어야 합니다

  (에러 원인 : IllegalArgumentException : contentView required : --- content=null)

아래 예시를 참고하시기 바랍니다.

notification.setLatestEventInfo(this, "contentTitle", "contentText", pendingIntent);
nm.notify(1234, notification);
Gradler (109,780 포인트) 님이 2015년 4월 14일 답변
kkong_93님이 2015년 4월 16일 채택됨
0 추천
java.lang.RuntimeException: Unable to start receiver freevergroup.freevercard.activities.PushServiceReceiver: java.lang.IllegalArgumentException: contentView required: pkg=freevergroup.freevercard id=1234 notification=Notification(pri=0 icon=7f02000e contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 when=1428915985928 ledARGB=0x0 contentIntent=Y deleteIntent=N contentTitle=N contentText=N tickerText=2 kind=[null])
 at android.app.ActivityThread.handleReceiver(ActivityThread.java:2675)
 at android.app.ActivityThread.access$1800(ActivityThread.java:175)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:146)
 at android.app.ActivityThread.main(ActivityThread.java:5602)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:515)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: contentView required: pkg=freevergroup.freevercard id=1234 notification=Notification(pri=0 icon=7f02000e contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 when=1428915985928 ledARGB=0x0 contentIntent=Y deleteIntent=N contentTitle=N contentText=N tickerText=2 kind=[null])
 at android.os.Parcel.readException(Parcel.java:1469)
 at android.os.Parcel.readException(Parcel.java:1419)
 at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:347)
 at android.app.NotificationManager.notify(NotificationManager.java:152)
 at android.app.NotificationManager.notify(NotificationManager.java:116)
 at freevergroup.freevercard.activities.PushServiceReceiver.onReceive(PushServiceReceiver.java:31)
 at android.app.ActivityThread.handleReceiver(ActivityThread.java:2660)

다음부터는 답변을 달아줄 사람들이 읽기 좋게 로그의 불필요한 시간 부분은 제거하세요.

 

 

at freevergroup.freevercard.activities.PushServiceReceiver.onReceive(PushServiceReceiver.java:31) 에서 java.lang.IllegalArgumentException 이 에러가 났다고하니 구글링을 하거나, 다른 노티 예제를 찾아보면 답이 나올겁니다.

 

 

쎄미 (162,410 포인트) 님이 2015년 4월 14일 답변
...