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 版本名称