안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
현재 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 인텐트 수신을 못하고 있습니다.
해결 방법은 공장초기화 또는 패키지명을 변경하여 재설치하면 다시 정상 동작을 하는데
요청한 퍼미션이 거부되는 현상에 대한 내용 아시면 좀 공유 해주세요.