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

마켓 버전체크때 발생하는 EOFException

0 추천

우선 구글링하면 나오는 가장 대표적인 소스코드를 보면 ..

 


static String getAndroidId(Context context) {
    Log.i("fureun", "here in getAndroidId");
    String[] params = { ID_KEY };
    Cursor c = context.getContentResolver()
            .query(URI, null, null, params, null);
  
    if (!c.moveToFirst() || c.getColumnCount() < 2)
        return null;
  
    try {
        Log.i("fureun", "getAndroidId() : " + Long.toHexString(Long.parseLong(c.getString(1))));
        return Long.toHexString(Long.parseLong(c.getString(1)));
    } catch (NumberFormatException e) {
        return null;
    }
}
 
public void mMarketVersionCheck() {
    MarketSession session = new MarketSession();
    session.login("@gmail.com","password");
    session.getContext().setAndroidId(getAndroidId(mContext));
    String query = "package";
    AppsRequest appsRequest = AppsRequest.newBuilder()
                                    .setQuery(query)
                                    .setStartIndex(0).setEntriesCount(10)
                                    .setWithExtendedInfo(true)
                                    .build();
    session.append(appsRequest, new Callback<AppsResponse>() {
             @Override
             public void onResult(ResponseContext context, AppsResponse response) {
                      // Your code here
                      // response.getApp(0).getCreator() ...
                  
                      // see AppsResponse class definition for more infos
              Log.d("fureun", "앱갯수 : "+response.getAppCount());
               
              for(int i = 0 ; i < response.getAppCount(); i++){
                  Log.d("fureun",i+"  "+response.getApp(i).getTitle());
                  Log.d("fureun",i+"  "+response.getApp(i).getCreator());
                  Log.d("fureun",i+"  "+response.getApp(i).getPackageName());
                  Log.d("fureun",i+"  "+response.getApp(i).getVersion());
                  Log.d("fureun",i+"  "+response.getApp(i).getVersionCode());
              }
            }
    });
    session.flush();
}

 

이렇게 돼 있습니다. 

작동 잘 되더라구요. 그런데 한번씩

 

session.flush(); 부분에서 java.io.EOFException이 발생합니다.

제 소스코드가 아닌 라이브러리에서(marketapi 라이브러리) 발생하더라구요

 

그래서 일단은 저부분에 try-catch문으로 예외처리는 해 주었는데

 

근본적인 문제 해결 방법이 아닌만큼 ... 혹시 저랑 같은 현상 겪으신분

 

어떻게 해결하셨는지, 또 해결 방법을 알고 계신분 계시면

 

도움좀 부탁드리겠습니다.

음무 (17,820 포인트) 님이 2014년 5월 16일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...