GCMRegistrar.checkDevice(context);
GCMRegistrar.checkManifest(context);
GCMRegistrar.register(context, SENDER_ID);
GCM관련 앱 만들어보고있습니다.
regID가져오는 부분인데, 두번째줄의 체크 매니페스트 부분에서 에러가 납니다.
에러로그는 아래에 올려두었는데요, 구글링 해보면서 매니페스트파일에 뭔가 빠져있나... 체크해봤는데 도저히 찾지 못할 것 같아서 질문 드립니다...
Process: com.project.user.gcmproject, PID: 29426
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: No receiver for package com.project.user.gcmproject
at com.google.android.gcm.GCMRegistrar.checkManifest(GCMRegistrar.java:151)
at com.project.user.gcmproject.CreateRegID$1.doInBackground(CreateRegID.java:73)
at com.project.user.gcmproject.CreateRegID$1.doInBackground(CreateRegID.java:67)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
이상 에러로그고 아래는 매니페스트 파일입니다.
<!-- [START gcm_permission] -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission android:name="com.project.user.gcmproject.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.project.user.gcmproject.permission.C2D_MESSAGE" />
<!-- [END gcm_permission] -->
<!-- [START gcm_receiver] -->
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.project.user.gcmproject" />
</intent-filter>
</receiver>
<service android:name="com.project.user.gcmproject.GcmIntentService" />
일단 전체를 올린건 아니고 퍼미션 주는거랑 리시버 등록 부분에서 잘못된게 있읅라 판단하여 그 부분만 올렸습니다.
브로드캐스트리시버는 com.google.android.gcm 으로 설정해주고, GCMBaseIntentService 클래스를 상속받은 클래스를 서비스에 등록해뒀는데 잘못한 점을 찾기가 힘들군요..ㅠㅠ