package dk.dr.radio.diverse;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.widget.Toast;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import dk.dr.radio.v3.BuildConfig;
/**
* Hjælpeklasse, der tjekker om der er kommet en ny version af APK'en.
* Bruges til udvikling - kald ignoreres i produktion
* Created by j on 07-12-15.
*/
public class AppOpdatering {
public static final String APK_URL = "http://android.lundogbendsen.dk/DRRadiov3.apk";
public static Date nyApkErTilgængelig;
public static Long findTidsstempelForSenesteAPK() throws Exception {
/*
final PackageManager pm = getPackageManager();
String apkName = "example.apk";
String fullPath = Environment.getExternalStorageDirectory() + "/" + apkName;
PackageInfo info = pm.getPackageArchiveInfo(fullPath, 0);
Toast.makeText(this, "VersionCode : " + info.versionCode + ", VersionName : " + info.versionName , Toast.LENGTH_LONG).show();
*/
URL url = new URL(APK_URL);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (urlConnection.getResponseCode()!= HttpURLConnection.HTTP_OK) return null;
if (!url.getHost().equals(urlConnection.getURL().getHost())) return null; // ingen omdirigeringer
long lm = urlConnection.getLastModified();
return lm;
}
public static void tjekForNyAPK(final Context ctx) {
if (!BuildConfig.DEBUG) return; // kun når APKen ikke er signeret med en publiceringsnøgle
final SharedPreferences prefs = ctx.getSharedPreferences("AppOpdatering",0);
new AsyncTask<Long,Long,Long>() {
@Override
protected Long doInBackground(Long... params) {
try {
return AppOpdatering.findTidsstempelForSenesteAPK();
} catch (Exception e) {
Log.d("AppOpdatering kunne ikke tjekke for ny version:"+e);
}
return null;
};
@Override
protected void onPostExecute(Long tidsstempel) {
if (tidsstempel==null) return;
String NØGLE = "tidsstempelForSenesteAPK";
long glTidsstempel = prefs.getLong(NØGLE, 0);
if (tidsstempel>glTidsstempel && glTidsstempel>0) {
Toast.makeText(ctx, "Der er kommet en ny version af app'en.\nDu kan hente en ny version i venstremenuen.", Toast.LENGTH_LONG).show();
ctx.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(APK_URL)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
nyApkErTilgængelig = new Date(tidsstempel);
}
if (tidsstempel>glTidsstempel || glTidsstempel==0) {
prefs.edit().putLong(NØGLE, tidsstempel).commit();
}
}
}.execute();
}
}