From 73be5df30469e8e345a689ddb907c2767bbfd96b Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Sun, 20 Mar 2022 13:55:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A8=A1=E5=9D=97=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=A3=80=E6=9F=A5=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../utils/factory/FunctionFactory.kt | 18 ++++++--- .../tsbattery/utils/tool/GithubReleaseTool.kt | 37 +++++++++++++++++-- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c1a653f..f8c3c41 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="com.fankes.tsbattery"> + diff --git a/app/src/main/java/com/fankes/tsbattery/utils/factory/FunctionFactory.kt b/app/src/main/java/com/fankes/tsbattery/utils/factory/FunctionFactory.kt index 0b7bb78..6e935cd 100644 --- a/app/src/main/java/com/fankes/tsbattery/utils/factory/FunctionFactory.kt +++ b/app/src/main/java/com/fankes/tsbattery/utils/factory/FunctionFactory.kt @@ -30,9 +30,11 @@ import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.res.Configuration import android.graphics.Color +import android.net.ConnectivityManager import android.net.Uri import android.provider.Settings import android.widget.Toast +import androidx.core.content.getSystemService import com.fankes.tsbattery.application.TSApplication.Companion.appContext import com.google.android.material.snackbar.Snackbar @@ -82,6 +84,13 @@ val Context.versionName get() = packageInfo.versionName ?: "" */ val Context.versionCode get() = packageInfo.versionCode +/** + * 网络连接是否正常 + * @return [Boolean] 网络是否连接 + */ +val isNetWorkSuccess + get() = safeOfFalse { appContext.getSystemService()?.activeNetworkInfo != null } + /** * dp 转换为 pxInt * @param context 使用的实例 @@ -115,22 +124,19 @@ fun Context.snake(msg: String, actionText: String = "", it: () -> Unit = {}) = setAction(actionText) { it() } }.show() - /** * 跳转 APP 自身设置界面 * @param packageName 包名 */ -fun Context.openSelfSetting(packageName: String) = runCatching { +fun Context.openSelfSetting(packageName: String = appContext.packageName) = runCatching { if (packageName.isInstall) startActivity(Intent().apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS data = Uri.fromParts("package", packageName, null) }) - else Toast.makeText(this, "你没有安装此应用", Toast.LENGTH_SHORT).show() -}.onFailure { - Toast.makeText(this, "启动 $packageName 应用信息失败", Toast.LENGTH_SHORT).show() -} + else toast(msg = "你没有安装此应用") +}.onFailure { toast(msg = "启动 $packageName 应用信息失败") } /** * 启动系统浏览器 diff --git a/app/src/main/java/com/fankes/tsbattery/utils/tool/GithubReleaseTool.kt b/app/src/main/java/com/fankes/tsbattery/utils/tool/GithubReleaseTool.kt index 8a108a1..ce4e603 100644 --- a/app/src/main/java/com/fankes/tsbattery/utils/tool/GithubReleaseTool.kt +++ b/app/src/main/java/com/fankes/tsbattery/utils/tool/GithubReleaseTool.kt @@ -23,9 +23,7 @@ package com.fankes.tsbattery.utils.tool import android.app.Activity import android.content.Context -import com.fankes.tsbattery.utils.factory.openBrowser -import com.fankes.tsbattery.utils.factory.runInSafe -import com.fankes.tsbattery.utils.factory.showDialog +import com.fankes.tsbattery.utils.factory.* import okhttp3.* import org.json.JSONObject import java.io.IOException @@ -48,7 +46,7 @@ object GithubReleaseTool { * @param version 当前版本 * @param it 成功后回调 - ([String] 最新版本,[Function] 更新对话框方法体) */ - fun checkingForUpdate(context: Context, version: String, it: (String, () -> Unit) -> Unit) = runInSafe { + fun checkingForUpdate(context: Context, version: String, it: (String, () -> Unit) -> Unit) = checkingInternetConnect(context) { OkHttpClient().newBuilder().build().newCall( Request.Builder() .url("https://api.github.com/repos/$repoAuthor/$repoName/releases/latest") @@ -82,6 +80,37 @@ object GithubReleaseTool { }) } + /** + * 检查网络连接情况 + * @param context 实例 + * @param it 已连接回调 + */ + private fun checkingInternetConnect(context: Context, it: () -> Unit) = runInSafe { + if (isNetWorkSuccess) + OkHttpClient().newBuilder().build().newCall( + Request.Builder() + .url("https://www.baidu.com") + .get() + .build() + ).enqueue(object : Callback { + override fun onFailure(call: Call, e: IOException) { + (context as? Activity?)?.runOnUiThread { + context.showDialog { + title = "网络连接失败" + msg = "模块的联网权限可能已被禁用,请开启联网权限以定期检查更新。" + confirmButton(text = "去开启") { context.openSelfSetting() } + cancelButton() + noCancelable() + } + } + } + + override fun onResponse(call: Call, response: Response) = runInSafe { + (context as? Activity?)?.runOnUiThread { runInSafe { it() } } + } + }) + } + /** * Github Release bean * @param name 版本名称