안드로이드 개발자 모임 게시판
(글 수 7,949)
안녕하세요.
TStore에 APP 올리실 때 참고하는 ARM 설명서이 샘플이 버그가 있습니다.
샘플보고 그대로 만드셨다면,
해당 어플은 에뮬에서도 돌고,
폰이 아닌 유경의 P3 같은 폰기능이 없는 안드로이드 PMP 같은 것에서 돌고,
타사 폰에서도 그냥 사용가능할 여지가 충분이 있습니다.
TStore 고객지원에 넌즈시 알려주었더니 문제 없다고 그냥 무시하네요.
---------
--------
TStore 설명서에 있는 소스 일부
-----------------
위 코드에서 문제가 되는 곳은
onCreate() 에서 runArmService(); 호출하고 그냥 진행합니다.
즉, 여기서 에러나오면 그냥 프로그램은 실행된다는 거죠.
실제 예뮬에서 해 보면, 예외오류 나옵니다.
그냥 실행되죠.
타사폰의 경우, SKT의 서비스가 올라가 있을리 없죠.
그런데, SKT에서 만든 서비스와 bindService 합니다.
그럼, 해당서비스 없다고 예외발생하겠지요.
그럼 또 그냥 프로그램 수행됩니다.
아래는 수정한 소스 입니다.
SKT 답변 같아서는 이런 정보도 공유할 필요가 있을까 생각되지만,
그래도, 같은 안드로이드 개발자로서 서로 도움이 되었으면 해서 올려 봅니다.
수고하세요!
TStore에 APP 올리실 때 참고하는 ARM 설명서이 샘플이 버그가 있습니다.
샘플보고 그대로 만드셨다면,
해당 어플은 에뮬에서도 돌고,
폰이 아닌 유경의 P3 같은 폰기능이 없는 안드로이드 PMP 같은 것에서 돌고,
타사 폰에서도 그냥 사용가능할 여지가 충분이 있습니다.
TStore 고객지원에 넌즈시 알려주었더니 문제 없다고 그냥 무시하네요.
---------
안녕하세요
T Store 운영팀입니다. 에뮬레이터의 경우 실질적으로 라이센스 발급요청을 3G망을 사용하여 하지 않으므로 동작이 될 수 있으나 단말에서 실제 테스트를 하는 경우는 단말의 USIM값을 체크하여 동작하므로 타사 폰의 경우도 정상적인 ARM값을 체크하여 동작하게 됩니다. 참고 부탁 드립니다. |
TStore 설명서에 있는 소스 일부
-----------------
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); runArmService(); // ARM Check 프로세스 진행 } private boolean runArmService ( ) { try{ if(armCon == null){ // bindService 진행 armCon = new ArmServiceConnection(); bindService(new Intent(IArmService.class.getName()), ----(1) armCon, Context.BIND_AUTO_CREATE); } return true; }catch(Exception e){ releaseService(); return false; } }
위 코드에서 문제가 되는 곳은
onCreate() 에서 runArmService(); 호출하고 그냥 진행합니다.
즉, 여기서 에러나오면 그냥 프로그램은 실행된다는 거죠.
실제 예뮬에서 해 보면, 예외오류 나옵니다.
그냥 실행되죠.
타사폰의 경우, SKT의 서비스가 올라가 있을리 없죠.
그런데, SKT에서 만든 서비스와 bindService 합니다.
그럼, 해당서비스 없다고 예외발생하겠지요.
그럼 또 그냥 프로그램 수행됩니다.
아래는 수정한 소스 입니다.
private boolean runArmService() { boolean bRet = false; try{ if(armCon == null){ // bindService 진행 armCon = new ArmServiceConnection(); } bRet = bindService(new Intent(IArmService.class.getName()), armCon, Context.BIND_AUTO_CREATE); }catch(Exception e){ // 비정상 적인 경우 e.printStackTrace(); releaseService(); } return bRet; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (runArmService() == false) // SKT ARM Check 프로세스 진행 { errorCopyRight(0); // 에러 출력하는 함수 }
SKT 답변 같아서는 이런 정보도 공유할 필요가 있을까 생각되지만,
그래도, 같은 안드로이드 개발자로서 서로 도움이 되었으면 해서 올려 봅니다.
수고하세요!
2010.09.16 21:46:03
SKT에서 다른 이통사에게도 티스토어를 개방한다고 하였는데,,
SKT용 단말기가 아닌경우엔 무턱대고 어플 실행을 막아버리는것도 문제가 되지 않을까요??
2010.09.17 08:50:09
전 이미 그건 알고 있어서 적용하고 있었는데요.. 버그가 그거뿐이라고 생각하신다면 큰 오산입니다.. >.<
onCreateDialog메쏘드를 그대로 적용을 하셨다면.. 살포시 이전키를 눌러보십시요...
[.setCancelable(false)] 이거 추가하셔야 합니다..
2010.09.17 14:29:36
딴지는 아닌데요~ 설명서에 보시면 runArmService() 호출하고 라이센스 체크 후 리턴 받는 ArmServiceConnection 클래스에서 리턴값이 1(Success) 일 경우에만 실행하라고 되어 있습니다. onCreate에서 runArmService() 이후에는 아무것도 하지 말아야죠. 리턴값이 1일 경우에만 프로그램으로 진입하구요.
그래도 혹시 이렇게 하면 문제가 발생할 수 있는건가요?