안녕하세요. 며칠 째 이것만 붙들고 있는데,

구글링 해도 만족할 만한 답을 찾지 못해서 질문 남깁니다.

GCM 서비스 클라이언트 부분을 개발하고 있는데요,

에러가 났는데 해결 하지 못해서 질문 남깁니다.

 

메인 엑티비티에서는

GCMRegistrar.checkDevice(mContext);

GCMRegistrar.checkManifest(mContext);
if (GCMRegistrar.getRegistrationId(mContext).equals("")) {
     GCMRegistrar.register(mContext, PROJECT_ID);
    } else {
     // 이미 GCM 을 상요하기위해 등록ID를 구해왔음
     GCMRegistrar.unregister(mContext);
     GCMRegistrar.register(mContext, PROJECT_ID);
    }

이렇게 사용하고, Manifest에서는

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.allbridge.memberaction"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

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

    <uses-permission android:name="net.allbridge.memberaction.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.SEND" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar"

        <activity
            android:name=".Login"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateAlwaysHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name=".GCMIntentService" >
        </service>

        <receiver
            android:name=".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="net.allbridge.memberaction" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

 

이렇게 사용하였습니다. 그런데, 이렇게 시작하고 보면 에러가 나는데 에러 화면은 첨부파일에 넣은 것처럼 이렇게 나옵니다.

 

주석처리 하고, 한 줄 씩 풀어가면서 실행시켜 보니깐,

GCMRegistrar.checkManifest(mContext);

이 부분에서 에러가 나는데요. 보시다시피 메니페스트에 하라는데로 permission은 다 등록했는데, 퍼미션 문제가 일어나는 것 같습니다.

해결 방안에 대해 아시는 분 계신가요?