簡體   English   中英

從服務 (Kotlin) 檢查 Android 中的 Internet 連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM