안녕하세요.


현재 C2DM 사용하여 개발하는 중입니다.


c2dm 사용하려면 packagename.permission.C2D_MESSAGE 라는 권한이 필요한데


PackageManager pm = getPackageManager();

PackageInfo pi = pm.getPackageInfo("packagename", PackageManager.GET_PERMISSIONS);


String[] parray = pi.requestedPermissions;

if(parray != null) {

for(String p : parray) {

Log.d("c2dmtest", p);

}

}


위 코드로 패키지에서 요청한 퍼미션 정보를 확인해보면 packagename.permission.C2D_MESSAGE 퍼미션이 포함되어 있습니다.


그런데


int check = pm.checkPermission("packagename.permission.C2D_MESSAGE", " packagename ");


코드로 받은 값을 확인해 보면 -1(PERMISSION_DENIED)입니다.


이것때문에 c2dm 등록 과정에서 permission_denial로 com.google.android.c2dm.intent.REGISTRATION 인텐트 수신을 못하고 있습니다.


해결 방법은 공장초기화 또는 패키지명을 변경하여 재설치하면 다시 정상 동작을 하는데


요청한 퍼미션이 거부되는 현상에 대한 내용 아시면 좀 공유 해주세요.