我需要一个安卓的互联网检查服务。 以下是完整的服务代码:
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
}
}
函数isInet在正常的Android应用程序中正常工作。 在服务中,它总是返回true(即使在没有连接的情况下)。 帮助它工作。
在islnet函数中尝试使用“return activeNetwork?。isconnected?:false”