parent
0038b64fe4
commit
0abd0f73cd
@ -0,0 +1,63 @@
|
|||||||
|
package com.common.commonlib.utils
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.graphics.Bitmap
|
||||||
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.Network
|
||||||
|
import android.net.NetworkRequest
|
||||||
|
import android.provider.Settings
|
||||||
|
import androidx.fragment.app.FragmentActivity
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.LifecycleObserver
|
||||||
|
import androidx.lifecycle.OnLifecycleEvent
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
|
object NetworkHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网络状态监听
|
||||||
|
*/
|
||||||
|
inline fun observerNetworkState(activity: FragmentActivity, crossinline callback: (Boolean) -> Unit) {
|
||||||
|
val manager = activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||||
|
val networkCallback = object : ConnectivityManager.NetworkCallback() {
|
||||||
|
override fun onAvailable(network: Network) {
|
||||||
|
super.onAvailable(network)
|
||||||
|
if (activity.isAlive) {
|
||||||
|
activity.runOnUiThread { callback(true) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLost(network: Network) {
|
||||||
|
super.onLost(network)
|
||||||
|
if (activity.isAlive) {
|
||||||
|
activity.runOnUiThread { callback(false) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
manager.requestNetwork(NetworkRequest.Builder().build(), networkCallback)
|
||||||
|
|
||||||
|
activity.lifecycle.addObserver(object : LifecycleObserver {
|
||||||
|
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
|
||||||
|
fun onDestroy() {
|
||||||
|
manager.unregisterNetworkCallback(networkCallback)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("MissingPermission")
|
||||||
|
fun isNetworkConnect(context: Context): Boolean {
|
||||||
|
val cm = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||||
|
return cm.activeNetworkInfo?.isAvailable ?: false
|
||||||
|
}
|
||||||
|
|
||||||
|
fun toNetworkSetting(context: Context) {
|
||||||
|
val intent = Intent(Settings.ACTION_WIFI_SETTINGS)
|
||||||
|
context.startActivity(intent)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue