From fa887c6a7ffb40a96f0a6c7e968969b196b1e1cc Mon Sep 17 00:00:00 2001 From: jsbxyyx Date: Thu, 18 Jul 2024 10:59:54 +0800 Subject: [PATCH] 1.9 --- app/build.gradle | 4 +- .../github/jsbxyyx/xbook/HomeFragment.java | 73 +++++++++++++++++++ .../github/jsbxyyx/xbook/MainActivity.java | 2 - .../jsbxyyx/xbook/SettingsActivity.java | 7 +- .../github/jsbxyyx/xbook/common/Common.java | 6 ++ 5 files changed, 87 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6db5a15..9859523 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,8 +26,8 @@ android { applicationId "com.github.jsbxyyx.xbook" minSdk 27 targetSdk 33 - versionCode 18 - versionName "1.8" + versionCode 19 + versionName "1.9" archivesBaseName = "xplay-v${versionName}" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/github/jsbxyyx/xbook/HomeFragment.java b/app/src/main/java/com/github/jsbxyyx/xbook/HomeFragment.java index f5ddf2d..40cda0c 100644 --- a/app/src/main/java/com/github/jsbxyyx/xbook/HomeFragment.java +++ b/app/src/main/java/com/github/jsbxyyx/xbook/HomeFragment.java @@ -1,14 +1,26 @@ package com.github.jsbxyyx.xbook; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import com.fasterxml.jackson.databind.JsonNode; +import com.github.jsbxyyx.xbook.common.DataCallback; +import com.github.jsbxyyx.xbook.common.LogUtil; +import com.github.jsbxyyx.xbook.data.BookNetHelper; + /** * @author jsbxyyx * @since 1.0 @@ -17,11 +29,72 @@ public class HomeFragment extends Fragment { private String TAG = "xbook"; + private View mView; + private Activity mActivity; + + private BookNetHelper bookNetHelper; + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); + bookNetHelper = new BookNetHelper(); return view; } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + mView = view; + mActivity = getActivity(); + + bookNetHelper.cloudVersions(new DataCallback() { + @Override + public void call(JsonNode o, Throwable err) { + if (err != null) { + LogUtil.d(getClass().getSimpleName(), "%s", LogUtil.getStackTraceString(err)); + mActivity.runOnUiThread(() -> { + Toast.makeText(mActivity, "获取版本更新失败:" + err.getMessage(), Toast.LENGTH_LONG).show(); + }); + return; + } + JsonNode data = o.get("data"); + if (data.isEmpty()) { + LogUtil.d(getClass().getSimpleName(), "versions empty."); + return; + } + try { + JsonNode update = data.get(0); + PackageInfo packageInfo = mActivity.getPackageManager().getPackageInfo(mActivity.getPackageName(), 0); + double localName = Double.parseDouble(packageInfo.versionName); + double cloudName = Double.parseDouble(update.get("name").asText().trim()); + if (cloudName > localName) { + mActivity.runOnUiThread(() -> { + new AlertDialog.Builder(mActivity) + .setTitle("提示") + .setMessage("有新版本啦,前往 我的-设置 进行版本更新") + .setIcon(android.R.drawable.ic_dialog_alert) + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + Intent localIntent = new Intent(mActivity, SettingsActivity.class); + startActivity(localIntent); + } + }).setNegativeButton(android.R.string.no, null) + .setCancelable(false) + .show(); + }); + } + } catch (PackageManager.NameNotFoundException e) { + LogUtil.e(TAG, "获取版本失败"); + mActivity.runOnUiThread(() -> { + Toast.makeText(mActivity, "获取版本失败", Toast.LENGTH_LONG).show(); + }); + return; + } + } + }); + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/github/jsbxyyx/xbook/MainActivity.java b/app/src/main/java/com/github/jsbxyyx/xbook/MainActivity.java index 00a5a66..76b50e0 100644 --- a/app/src/main/java/com/github/jsbxyyx/xbook/MainActivity.java +++ b/app/src/main/java/com/github/jsbxyyx/xbook/MainActivity.java @@ -78,8 +78,6 @@ public void onClick(DialogInterface dialog, int whichButton) { .show(); } - - bottomNavigationView = findViewById(R.id.bottom_navigation); fm = getSupportFragmentManager(); diff --git a/app/src/main/java/com/github/jsbxyyx/xbook/SettingsActivity.java b/app/src/main/java/com/github/jsbxyyx/xbook/SettingsActivity.java index d30b6c1..7145c29 100644 --- a/app/src/main/java/com/github/jsbxyyx/xbook/SettingsActivity.java +++ b/app/src/main/java/com/github/jsbxyyx/xbook/SettingsActivity.java @@ -71,7 +71,8 @@ protected void onCreate(Bundle savedInstanceState) { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); tv_version.setText(packageInfo.versionName); } catch (PackageManager.NameNotFoundException e) { - throw new RuntimeException(e); + LogUtil.e(getClass().getSimpleName(), "获取版本失败", e); + Toast.makeText(this, "获取版本失败", Toast.LENGTH_LONG).show(); } Button btn_update = findViewById(R.id.btn_update); @@ -93,6 +94,10 @@ public void call(File file, Throwable err) { return; } LogUtil.d(getClass().getSimpleName(), "下载成功,开始安装"); + runOnUiThread(() -> { + Toast.makeText(context, "下载成功,开始安装", Toast.LENGTH_LONG).show(); + }); + Common.sleep(1000); Intent install = new Intent(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { install.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); diff --git a/app/src/main/java/com/github/jsbxyyx/xbook/common/Common.java b/app/src/main/java/com/github/jsbxyyx/xbook/common/Common.java index 330f20d..8c7fdcf 100644 --- a/app/src/main/java/com/github/jsbxyyx/xbook/common/Common.java +++ b/app/src/main/java/com/github/jsbxyyx/xbook/common/Common.java @@ -88,4 +88,10 @@ public static boolean isBlank(String str) { return str == null || str.trim().isEmpty(); } + public static void sleep(int millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException ignore) { + } + } }