Add check update
This commit is contained in:
1 parent
4921566ddd
commit
bac3b3a970
11 files changed
+199
-4
No files matched your search
@@ -53,6 +53,8 @@ public class EhApplication extends SceneApplication implements Thread.UncaughtEx
|
||||
|
||||
private static final String TAG = EhApplication.class.getSimpleName();
|
||||
|
||||
public static final boolean BETA = true;
|
||||
|
||||
private static final boolean DEBUG_CONACO = false;
|
||||
private static final boolean DEBUG_NATIVE_MEMORY = false;
|
||||
|
||||
@@ -97,6 +99,10 @@ public class EhApplication extends SceneApplication implements Thread.UncaughtEx
|
||||
Analytics.start(this);
|
||||
}
|
||||
|
||||
if (BETA) {
|
||||
Settings.putBetaUpdateChannel(true);
|
||||
}
|
||||
|
||||
// Update version code
|
||||
try {
|
||||
PackageInfo pi= getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
|
||||
@@ -488,11 +488,25 @@ public class Settings {
|
||||
return true;
|
||||
}
|
||||
|
||||
/********************
|
||||
****** Update
|
||||
********************/
|
||||
private static final String KEY_BETA_UPDATE_CHANNEL = "beta_update_channel";
|
||||
private static final boolean DEFAULT_BETA_UPDATE_CHANNEL = EhApplication.BETA;
|
||||
|
||||
public static boolean getBetaUpdateChannel() {
|
||||
return getBoolean(KEY_BETA_UPDATE_CHANNEL, DEFAULT_BETA_UPDATE_CHANNEL);
|
||||
}
|
||||
|
||||
public static void putBetaUpdateChannel(boolean value) {
|
||||
putBoolean(KEY_BETA_UPDATE_CHANNEL, value);
|
||||
}
|
||||
|
||||
/********************
|
||||
****** Crash
|
||||
********************/
|
||||
public static final String KEY_CRASH_FILENAME = "crash_filename";
|
||||
public static final String VALUE_CRASH_FILENAME = null;
|
||||
private static final String KEY_CRASH_FILENAME = "crash_filename";
|
||||
private static final String VALUE_CRASH_FILENAME = null;
|
||||
|
||||
public static String getCrashFilename() {
|
||||
return getString(KEY_CRASH_FILENAME, VALUE_CRASH_FILENAME);
|
||||
|
||||
@@ -17,25 +17,150 @@
|
||||
package com.hippo.ehviewer.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.AsyncTask;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
|
||||
import com.hippo.app.ListCheckBoxDialogBuilder;
|
||||
import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.EhDB;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.Settings;
|
||||
import com.hippo.ehviewer.UrlOpener;
|
||||
import com.hippo.ehviewer.client.EhClient;
|
||||
import com.hippo.ehviewer.client.EhRequest;
|
||||
import com.hippo.ehviewer.client.data.GalleryInfo;
|
||||
import com.hippo.ehviewer.dao.DownloadLabel;
|
||||
import com.hippo.ehviewer.download.DownloadManager;
|
||||
import com.hippo.ehviewer.download.DownloadService;
|
||||
import com.hippo.text.Html;
|
||||
import com.hippo.yorozuya.FileUtils;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
|
||||
public final class CommonOperations {
|
||||
|
||||
private static final String TAG = CommonOperations.class.getSimpleName();
|
||||
|
||||
private static boolean UPDATING;
|
||||
|
||||
public static void checkUpdate(Activity activity, boolean feedback) {
|
||||
if (!UPDATING) {
|
||||
UPDATING = true;
|
||||
new UpdateTask(activity, feedback).execute();
|
||||
}
|
||||
}
|
||||
|
||||
private static final class UpdateTask extends AsyncTask<Void, Void, JSONObject> {
|
||||
|
||||
private final Activity mActivity;
|
||||
private final OkHttpClient mHttpClient;
|
||||
private final boolean mFeedback;
|
||||
|
||||
public UpdateTask(Activity activity, boolean feedback) {
|
||||
mActivity = activity;
|
||||
mHttpClient = EhApplication.getOkHttpClient(activity);
|
||||
mFeedback = feedback;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JSONObject doInBackground(Void... params) {
|
||||
try {
|
||||
String url;
|
||||
if (Settings.getBetaUpdateChannel()) {
|
||||
url = "http://www.ehviewer.com/update_beta.json";
|
||||
} else {
|
||||
url = "http://www.ehviewer.com/update.json";
|
||||
}
|
||||
Log.d(TAG, url);
|
||||
Request request = new Request.Builder().url(url).build();
|
||||
Response response = mHttpClient.newCall(request).execute();
|
||||
return new JSONObject(response.body().string());
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
} catch (JSONException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void showUpToDateDialog() {
|
||||
if (!mFeedback) {
|
||||
return;
|
||||
}
|
||||
|
||||
new AlertDialog.Builder(mActivity)
|
||||
.setMessage(R.string.update_to_date)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void showUpdateDialog(String versionName, String size, CharSequence info, final String url) {
|
||||
new AlertDialog.Builder(mActivity)
|
||||
.setTitle(R.string.update)
|
||||
.setMessage(mActivity.getString(R.string.update_plain, versionName, size, info))
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
UrlOpener.openUrl(mActivity, url, false, false);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
|
||||
private void handleResult(JSONObject jo) {
|
||||
if (null == jo || mActivity.isFinishing()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String versionName;
|
||||
String size;
|
||||
CharSequence info;
|
||||
String url;
|
||||
|
||||
try {
|
||||
PackageManager pm = mActivity.getPackageManager();
|
||||
PackageInfo pi = pm.getPackageInfo(mActivity.getPackageName(), PackageManager.GET_ACTIVITIES);
|
||||
int currentVersionCode = pi.versionCode;
|
||||
int newVersionCode = jo.getInt("version_code");
|
||||
if (currentVersionCode >= newVersionCode) {
|
||||
// Update to date
|
||||
showUpToDateDialog();
|
||||
return;
|
||||
}
|
||||
|
||||
versionName = jo.getString("version_name");
|
||||
size = FileUtils.humanReadableByteCount(jo.getLong("size"), false);
|
||||
info = Html.fromHtml(jo.getString("info"));
|
||||
url = jo.getString("url");
|
||||
} catch (PackageManager.NameNotFoundException | JSONException e) {
|
||||
return;
|
||||
}
|
||||
|
||||
showUpdateDialog(versionName, size, info, url);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(JSONObject jsonObject) {
|
||||
try {
|
||||
handleResult(jsonObject);
|
||||
} finally {
|
||||
UPDATING = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void doAddToFavorites(Activity activity, GalleryInfo galleryInfo,
|
||||
int slot, EhClient.Callback<Void> listener) {
|
||||
if (slot == -1) {
|
||||
|
||||
@@ -266,6 +266,7 @@ public final class MainActivity extends StageActivity
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
onInit();
|
||||
CommonOperations.checkUpdate(this, false);
|
||||
} else {
|
||||
onRestore(savedInstanceState);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.hippo.ehviewer.EhApplication;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.Settings;
|
||||
import com.hippo.ehviewer.UrlOpener;
|
||||
import com.hippo.ehviewer.ui.CommonOperations;
|
||||
import com.hippo.ehviewer.ui.LicenseActivity;
|
||||
import com.hippo.util.ActivityHelper;
|
||||
|
||||
@@ -41,6 +42,8 @@ public class AboutFragment extends PreferenceFragment
|
||||
private static final String KEY_CHANGELOG = "changelog";
|
||||
private static final String KEY_LICENSE = "license";
|
||||
private static final String KEY_DONATE = "donate";
|
||||
private static final String KEY_CHECK_FOR_UPDATES = "check_for_updates";
|
||||
private static final String KEY_BETA_UPDATE_CHANNEL = "beta_update_channel";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -55,8 +58,11 @@ public class AboutFragment extends PreferenceFragment
|
||||
Preference changelog = findPreference(KEY_CHANGELOG);
|
||||
Preference license = findPreference(KEY_LICENSE);
|
||||
Preference donate = findPreference(KEY_DONATE);
|
||||
Preference checkForUpdate = findPreference(KEY_CHECK_FOR_UPDATES);
|
||||
Preference betaUpdateChannel = findPreference(KEY_BETA_UPDATE_CHANNEL);
|
||||
|
||||
author.setSummary(getString(R.string.settings_about_author_summary).replace('$', '@'));
|
||||
betaUpdateChannel.setDefaultValue(EhApplication.BETA);
|
||||
|
||||
author.setOnPreferenceClickListener(this);
|
||||
googlePlus.setOnPreferenceClickListener(this);
|
||||
@@ -65,6 +71,7 @@ public class AboutFragment extends PreferenceFragment
|
||||
changelog.setOnPreferenceClickListener(this);
|
||||
license.setOnPreferenceClickListener(this);
|
||||
donate.setOnPreferenceClickListener(this);
|
||||
checkForUpdate.setOnPreferenceClickListener(this);
|
||||
|
||||
enableAnalytics.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
@@ -106,6 +113,8 @@ public class AboutFragment extends PreferenceFragment
|
||||
.setTitle(R.string.settings_about_donate)
|
||||
.setMessage(getString(R.string.settings_about_donate_message).replace('$', '@'))
|
||||
.show();
|
||||
} else if (KEY_CHECK_FOR_UPDATES.equals(key)) {
|
||||
CommonOperations.checkUpdate(getActivity(), true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user