[英]Check Internet connection in Android from the service (Kotlin)
我需要 Android 的 Internet 檢查器服務。 以下是完整的服務代碼:
package com.example.myserviceexample
import android.app.Service
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
import android.net.NetworkInfo
import android.os.IBinder
import android.util.Log
class MyService : Service() {
val TAG = "My Service"
override fun onBind(intent: Intent): IBinder? {
return null
}
override fun onCreate() {
showLog("onCreate")
super.onCreate()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
showLog("onStartCommand")
val runnable = Runnable {
for(i in 1..100){
val flag = isInet(this)
showLog("Service doing something. " +i.toString()+" "+ flag.toString())
//write_str(i.toString())
Thread.sleep(1000)
}
stopSelf()
}
val thread = Thread(runnable)
thread.start()
return super.onStartCommand(intent, flags, startId)
}
override fun onDestroy() {
showLog("onDestroy")
super.onDestroy()
}
fun showLog(message: String){
Log.d(TAG, message)
}
fun isInet(context: Context):Boolean{
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
return activeNetwork?.isConnectedOrConnecting == true
}
}
function isInet在正常的 Android 應用程序中正常工作。 在服務中,它總是返回true (即使沒有連接)。 幫助使其工作。
在 islnet function 中嘗試使用“return activeNetwork?.isConnected?: false”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.