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

Gcm onRegistered 호출이 안되는 문제

0 추천
안녕하세요?

초보 개발자입니다^^

이곳저곳 찾아보다가, 도저히 안되어서 질문 게시판을 찾게 되었습니다 ㅠ.ㅠ

 

제가 가지고 있는 폰 중에 4.4.4 이상 , 그리고 4.0.4 노트2 휴대폰을 보유하고 있습니다.

4.4.4이상 폰에서는

GCMRegistrar.register  호출시, onRegistered으로 제대로 호출이 됩니다. 그런데,

 

노트2 4.0.4 는

GCMRegistrar.register  호출시, onRegistered 이 호출이 되지 않습니다

 

 

참고로 4.0.4는 유심이 빠져 있는 상황입니다.

 

저는 짐작되는 원인에 대해서 알 수가 없네요

 

짐작되는 원인을 알 수 있을까요?

 

이게 왜 그럴까요?ㅠㅠ
레디안 (560 포인트) 님이 2015년 11월 14일 질문

1개의 답변

0 추천

자답입니다.

혹시 저와 같은 실수하시는 분이 없으시길..^^;

 

1. 잘못된 예 (4.4.4 이상에서는 잘 작동이 되었는데, 4.0.4 쪽에서 테스트하니까 먹통)

package="test.test.test"

    <permission
        android:name=".permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name=".permission.C2D_MESSAGE" />

...

        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="ssss.test.tttt" />
            </intent-filter>
        </receiver>

 

 

2. 올바르게 고친 것

  (1) permission에 페키지 네임을 풀로 적어준다.

  (2) android:exported="true"를 삽입한다.

  (3) <category android:name="패키지명"> 를 명시해준다.

package="test.test.test"

    <permission
        android:name="test.test.test.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="test.test.test.permission.C2D_MESSAGE" />

...

        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND"
            android:exported="true" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="test.test.test" />
            </intent-filter>
        </receiver>

 

 

 

 

이렇게 하니까 잘 작동 되네요^^

레디안 (560 포인트) 님이 2015년 11월 14일 답변
...