diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/gps/GpsImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/gps/GpsImpl.kt index c290ed65b0..f53bf35c5e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/gps/GpsImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/gps/GpsImpl.kt @@ -35,15 +35,23 @@ internal class GpsImpl(ctx: Context): IFlow(ctx) { } private val onClose = { - send(false, PermissionUtils.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) + send(false, isGrandFineLocation()) } private val onOpen = { - send(true, PermissionUtils.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) + send(true, isGrandFineLocation()) } + private fun isGrandFineLocation(): Boolean = try { + PermissionUtils.isGranted(Manifest.permission.ACCESS_FINE_LOCATION) + } catch (t: Throwable) { + t.printStackTrace() + false + } + + override fun onCreate() { - val isGranted = PermissionUtils.isGranted(Manifest.permission.ACCESS_FINE_LOCATION) + val isGranted = isGrandFineLocation() send(isLocationEnabled(), isGranted) if (!isGranted) { PermissionUtils.requestAccessFineLocation(object : SimpleCallback { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/nets/NetsImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/nets/NetsImpl.kt index 0e15261740..0adb0bee7c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/nets/NetsImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/nets/NetsImpl.kt @@ -78,12 +78,21 @@ internal class NetsImpl(ctx: Context): IFlow(ctx) { private var loopCheckAndSendJob: Job? = null private fun checkAndSend() { - val connectionInfo = wifiMgr.connectionInfo - val enabled = isNetConnected() - val name = if (isLocationEnabled()) connectionInfo.ssid?.replace(Regex("[\\W]"), "") else "WI-FI" loopCheckAndSendJob?.safeCancel() - launch(Dispatchers.Default) { delay(1000); checkAndSend() }.also { loopCheckAndSendJob = it } - send(enabled, name) + launch(Dispatchers.Default) { + val connectionInfo = wifiMgr.connectionInfo + val enabled = isNetConnected() + val name = + try { + if (isLocationEnabled()) connectionInfo.ssid?.replace(Regex("[\\W]"), "") else "WI-FI" + } catch (t: Throwable) { + t.printStackTrace() + "WI-FI" + } + send(enabled, name) + delay(1000); + checkAndSend() + }.also { loopCheckAndSendJob = it } } private fun isLocationEnabled() =