boolean isManifestUpdated() { if (!mCacheFile.exists()) { Log.i("ManifestCheckerService", "updated: cache file does not exist"); return true; } try { MessageDigest dataDigester = MessageDigest.getInstance("MD5"); dataDigester.update(mFetcher.getData(), 0, mFetcher.getDataLen()); byte[] dataDigest = dataDigester.digest(); MessageDigest fileDigester = MessageDigest.getInstance("MD5"); FileInputStream is = new FileInputStream(mCacheFile); byte[] buf = new byte[4096]; int len; while ((len = is.read(buf)) > 0) { fileDigester.update(buf, 0, len); } is.close(); byte[] fileDigest = fileDigester.digest(); if (Arrays.equals(dataDigest, fileDigest)) { return false; } Log.i("ManifestCheckerService", "updated: digests differ"); } catch (Exception e) { Log.e("ManifestFetcher", "caught exception: " + e.getMessage()); e.printStackTrace(); } return true; }
void writeManifest() { try { FileOutputStream os = new FileOutputStream(mCacheFile); os.write(mFetcher.getData(), 0, mFetcher.getDataLen()); os.close(); } catch (Exception e) { Log.e("ManifestFetcher", "caught exception: " + e.getMessage()); e.printStackTrace(); } }
private void startCheck() { if (mFetcher == null) { Handler handler = new ManifestFetcherHandler(this); mFetcher = new ManifestFetcher(this, handler); mFetcher.start(); } }