diff --git a/app/src/main/java/com/stardust/scriptdroid/network/Apis.java b/app/src/main/java/com/stardust/scriptdroid/network/Apis.java deleted file mode 100644 index 7a76849d..00000000 --- a/app/src/main/java/com/stardust/scriptdroid/network/Apis.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.stardust.scriptdroid.network; - -/** - * Created by Stardust on 2017/9/20. - */ - -public class Apis { -} diff --git a/app/src/main/java/com/stardust/scriptdroid/network/VersionService.java b/app/src/main/java/com/stardust/scriptdroid/network/VersionService.java index 0aa300d3..fc0454f0 100644 --- a/app/src/main/java/com/stardust/scriptdroid/network/VersionService.java +++ b/app/src/main/java/com/stardust/scriptdroid/network/VersionService.java @@ -10,6 +10,7 @@ import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.BuildConfig; import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.network.api.UpdateCheckApi; import com.stardust.scriptdroid.network.entity.VersionInfo; import com.stardust.scriptdroid.tool.SimpleObserver; import com.stardust.scriptdroid.ui.update.UpdateInfoDialogBuilder; @@ -57,23 +58,6 @@ public class VersionService { .subscribeOn(Schedulers.io()); } - public void checkForUpdatesAndShow(final Context context) { - checkForUpdates().observeOn(AndroidSchedulers.mainThread()) - .subscribe(new SimpleObserver() { - - @Override - public void onNext(@io.reactivex.annotations.NonNull VersionInfo versionInfo) { - new UpdateInfoDialogBuilder(context, versionInfo) - .show(); - } - - @Override - public void onError(@io.reactivex.annotations.NonNull Throwable e) { - Toast.makeText(App.getApp(), R.string.text_check_update_error, Toast.LENGTH_SHORT).show(); - } - }); - } - private void readDeprecatedFromPref(Context context) { mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -96,10 +80,6 @@ public class VersionService { return mDeprecated; } - public VersionInfo getVersionInfo() { - return mVersionInfo; - } - public String getCurrentVersionIssues() { if (mVersionInfo == null) return null; diff --git a/app/src/main/java/com/stardust/scriptdroid/network/UpdateCheckApi.java b/app/src/main/java/com/stardust/scriptdroid/network/api/UpdateCheckApi.java similarity index 70% rename from app/src/main/java/com/stardust/scriptdroid/network/UpdateCheckApi.java rename to app/src/main/java/com/stardust/scriptdroid/network/api/UpdateCheckApi.java index 1777df63..d7c8c228 100644 --- a/app/src/main/java/com/stardust/scriptdroid/network/UpdateCheckApi.java +++ b/app/src/main/java/com/stardust/scriptdroid/network/api/UpdateCheckApi.java @@ -1,4 +1,4 @@ -package com.stardust.scriptdroid.network; +package com.stardust.scriptdroid.network.api; import com.stardust.scriptdroid.network.entity.VersionInfo; @@ -11,7 +11,7 @@ import retrofit2.http.GET; public interface UpdateCheckApi { - @GET("/hyb1996/NoRootScriptDroid/master/version.json") + @GET("/hyb1996/NoRootScriptDroid/new_ui/version.json") Observable checkForUpdates(); } diff --git a/app/src/main/java/com/stardust/scriptdroid/network/entity/VersionInfo.java b/app/src/main/java/com/stardust/scriptdroid/network/entity/VersionInfo.java index cf944f6d..60737311 100644 --- a/app/src/main/java/com/stardust/scriptdroid/network/entity/VersionInfo.java +++ b/app/src/main/java/com/stardust/scriptdroid/network/entity/VersionInfo.java @@ -3,6 +3,8 @@ package com.stardust.scriptdroid.network.entity; import android.text.TextUtils; +import com.stardust.scriptdroid.BuildConfig; + import org.json.JSONObject; import java.util.List; @@ -35,6 +37,10 @@ public class VersionInfo { return null; } + public boolean isNewer() { + return versionCode > BuildConfig.VERSION_CODE; + } + @Override public String toString() { return "UpdateInfo{" + @@ -48,6 +54,7 @@ public class VersionInfo { '}'; } + public static class OldVersion extends JSONObject { public int versionCode; diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java index 7fc76d17..305abce2 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java @@ -33,14 +33,6 @@ public class CommunityFragment extends ViewPagerFragment implements BackPressedH super(0); } - @Override - public void onAttach(Context context) { - super.onAttach(context); - ((BackPressedHandler.HostActivity) getActivity()) - .getBackPressedObserver() - .registerHandler(this); - } - @AfterViews void setUpViews() { mWebView = mEWebView.getWebView(); @@ -48,8 +40,16 @@ public class CommunityFragment extends ViewPagerFragment implements BackPressedH } @Override - public void onDetach() { - super.onDetach(); + public void onResume() { + super.onResume(); + ((BackPressedHandler.HostActivity) getActivity()) + .getBackPressedObserver() + .registerHandlerAtFront(this); + } + + @Override + public void onPause() { + super.onPause(); ((BackPressedHandler.HostActivity) getActivity()) .getBackPressedObserver() .unregisterHandler(this); diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/doc/OnlineDocsFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/doc/OnlineDocsFragment.java index 32394161..fc509e75 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/doc/OnlineDocsFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/doc/OnlineDocsFragment.java @@ -32,23 +32,24 @@ public class OnlineDocsFragment extends ViewPagerFragment implements BackPressed super(ROTATION_GONE); } - @Override - public void onAttach(Context context) { - super.onAttach(context); - ((BackPressedHandler.HostActivity) getActivity()) - .getBackPressedObserver() - .registerHandler(this); - } - @AfterViews void setUpViews() { mWebView = mEWebView.getWebView(); mWebView.loadUrl("https://hyb1996.github.io/AutoJs-Docs/"); } + @Override - public void onDetach() { - super.onDetach(); + public void onResume() { + super.onResume(); + ((BackPressedHandler.HostActivity) getActivity()) + .getBackPressedObserver() + .registerHandlerAtFront(this); + } + + @Override + public void onPause() { + super.onPause(); ((BackPressedHandler.HostActivity) getActivity()) .getBackPressedObserver() .unregisterHandler(this); diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java index d7a10f4c..60deb800 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java @@ -14,11 +14,9 @@ import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService; -import com.stardust.scriptdroid.network.UpdateCheckApi; import com.stardust.scriptdroid.network.VersionService; import com.stardust.scriptdroid.network.entity.VersionInfo; import com.stardust.scriptdroid.tool.SimpleObserver; -import com.stardust.scriptdroid.ui.common.ProgressDialog; import com.stardust.scriptdroid.ui.settings.SettingsActivity; import com.stardust.scriptdroid.ui.update.UpdateInfoDialogBuilder; import com.stardust.theme.ThemeColorManager; @@ -27,7 +25,6 @@ import com.stardust.scriptdroid.sublime.SublimePluginService; import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.WifiTool; import com.stardust.util.IntentUtil; -import com.stardust.util.UnderuseExecutors; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; @@ -219,8 +216,14 @@ public class DrawerFragment extends android.support.v4.app.Fragment { @Override public void onNext(@io.reactivex.annotations.NonNull VersionInfo versionInfo) { - new UpdateInfoDialogBuilder(getActivity(), versionInfo) - .show(); + if (getActivity() == null) + return; + if (versionInfo.isNewer()) { + new UpdateInfoDialogBuilder(getActivity(), versionInfo) + .show(); + } else { + Toast.makeText(App.getApp(), R.string.text_is_latest_version, Toast.LENGTH_SHORT).show(); + } mCheckForUpdatesItem.setProgress(false); } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java index 82b3f22b..a8ac2dc6 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java @@ -15,6 +15,7 @@ import com.stardust.scriptdroid.ui.BaseActivity; import com.stardust.scriptdroid.ui.error.IssueReporterActivity; import com.stardust.scriptdroid.ui.splash.SplashActivity; import com.stardust.scriptdroid.ui.splash.SplashActivity_; +import com.stardust.scriptdroid.ui.update.UpdateCheckDialog; import com.stardust.theme.preference.ThemeColorPreferenceFragment; import com.stardust.util.IntentUtil; import com.stardust.util.MapEntries; @@ -130,7 +131,8 @@ public class SettingsActivity extends BaseActivity { .entry(getString(R.string.text_check_for_updates), new Runnable() { @Override public void run() { - VersionService.getInstance().checkForUpdatesAndShow(getActivity()); + new UpdateCheckDialog(getActivity()) + .show(); } }) .entry(getString(R.string.text_issue_report), new Runnable() { diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/update/UpdateCheckDialog.java b/app/src/main/java/com/stardust/scriptdroid/ui/update/UpdateCheckDialog.java new file mode 100644 index 00000000..ed2f21ce --- /dev/null +++ b/app/src/main/java/com/stardust/scriptdroid/ui/update/UpdateCheckDialog.java @@ -0,0 +1,57 @@ +package com.stardust.scriptdroid.ui.update; + +import android.content.Context; +import android.widget.Toast; + +import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.App; +import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.network.VersionService; +import com.stardust.scriptdroid.network.entity.VersionInfo; +import com.stardust.scriptdroid.tool.SimpleObserver; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; + +/** + * Created by Stardust on 2017/9/20. + */ + +public class UpdateCheckDialog { + + private MaterialDialog mProgress; + private Context mContext; + + public UpdateCheckDialog(Context context) { + mProgress = new MaterialDialog.Builder(context) + .progress(true, 0) + .content(R.string.text_checking_update) + .build(); + } + + public void show() { + mProgress.show(); + VersionService.getInstance() + .checkForUpdates() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SimpleObserver() { + @Override + public void onNext(@NonNull VersionInfo versionInfo) { + mProgress.dismiss(); + if (versionInfo.isNewer()) { + new UpdateInfoDialogBuilder(mContext, versionInfo) + .show(); + } else { + Toast.makeText(App.getApp(), R.string.text_is_latest_version, Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onError(@NonNull Throwable e) { + e.printStackTrace(); + mProgress.dismiss(); + Toast.makeText(App.getApp(), R.string.text_check_update_error, Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/update/VersionGuard.java b/app/src/main/java/com/stardust/scriptdroid/ui/update/VersionGuard.java index f202ca11..5fc8480f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/update/VersionGuard.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/update/VersionGuard.java @@ -80,7 +80,8 @@ public class VersionGuard { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { if (which == DialogAction.POSITIVE) { - VersionService.getInstance().checkForUpdatesAndShow(mActivity); + new UpdateCheckDialog(mActivity) + .show(); } else { mActivity.finish(); } diff --git a/common/src/main/java/com/stardust/util/BackPressedHandler.java b/common/src/main/java/com/stardust/util/BackPressedHandler.java index d1776980..ac5125d5 100644 --- a/common/src/main/java/com/stardust/util/BackPressedHandler.java +++ b/common/src/main/java/com/stardust/util/BackPressedHandler.java @@ -1,6 +1,7 @@ package com.stardust.util; import android.app.Activity; +import android.os.Handler; import android.widget.Toast; @@ -37,6 +38,10 @@ public interface BackPressedHandler { mBackPressedHandlers.add(handler); } + public void registerHandlerAtFront(BackPressedHandler handler) { + mBackPressedHandlers.add(0, handler); + } + public void unregisterHandler(BackPressedHandler handler) { mBackPressedHandlers.remove(handler); }