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

GCM Manifest 질문입니다. [closed]

0 추천
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 클래스를 상속받은 클래스를 서비스에 등록해뒀는데 잘못한 점을 찾기가 힘들군요..ㅠㅠ
질문을 종료한 이유: 자답
익명사용자 님이 2015년 9월 20일 질문
2015년 9월 20일 closed
...