우선 구글링하면 나오는 가장 대표적인 소스코드를 보면 ..
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문으로 예외처리는 해 주었는데
근본적인 문제 해결 방법이 아닌만큼 ... 혹시 저랑 같은 현상 겪으신분
어떻게 해결하셨는지, 또 해결 방법을 알고 계신분 계시면
도움좀 부탁드리겠습니다.