首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想检查网络连接状态,在使用getActiveNetworkInfo方法时卡住了,该方法被禁用

我想检查网络连接状态,在使用getActiveNetworkInfo方法时卡住了,该方法被禁用
EN

Stack Overflow用户
提问于 2019-06-10 13:58:48
回答 3查看 158关注 0票数 0

我基本上是想知道在API level 29中使用了NetworkInfo方法之后,如何在android中检查互联网连接状态。

我已经尝试过调用getActiveNetworkInfo方法,但它是无效的,任何快速帮助都是非常感谢的。

我被困在这一点上了..

代码语言:javascript
复制
fun verifyIfNetworkAvailable(activity: AppCompatActivity):Boolean{

        var connectivityManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            var networkInfo = connectivityManager.isDefaultNetworkActive

            return networkInfo != null && networkInfo.isConnected

        }

顺便说一下,我正在使用Kotlin。

EN

回答 3

Stack Overflow用户

发布于 2019-06-10 14:15:27

继续这个,PS不是我的,

代码语言:javascript
复制
fun isWiFiConnected(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    val network = connectivityManager.activeNetwork
    val capabilities = connectivityManager.getNetworkCapabilities(network)
    capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI))
} else {
    connectivityManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI
}

}

票数 0
EN

Stack Overflow用户

发布于 2019-06-10 14:15:31

NetworkInfo类在API级别29中已弃用。因此,为NetworkInfo返回实例的方法也被弃用。要进一步使用更新的API,您可以关注文档,它说:-

调用者应该改为使用ConnectivityManager.NetworkCallback应用编程接口来了解连接更改,或者切换到使用ConnectivityManager#getNetworkCapabilities或ConnectivityManager#getLinkProperties来同步获取信息。

请查看Network InfoConnectivity Manager官方文档进行使用。

票数 0
EN

Stack Overflow用户

发布于 2019-06-10 16:46:45

你可以像这样检查网络连接。如果您不想检查设备连接性。

第1步添加异步类

代码语言:javascript
复制
public class YourInternetCheckerClass extends AsyncTask<Void, Void, Boolean>
{
    @Override
    protected Boolean doInBackground(Void... voids)
    {
        try
        {
            InetAddress ipAddr = InetAddress.getByName("www.google.com");
            return !ipAddr.equals("");

        }
        catch (Exception e)
        {
            Log.e("GCInternetChecker", e.toString());
            return false;
        }
    }
}

步骤2调用此异步任务,这是一个函数。

代码语言:javascript
复制
  private boolean checkInternetConnection()
    {
        try
        {
            return new GCInternetChecker().execute().get();
        }
        catch (Exception e)
        {
            return false;
        }
    }

第3步在呼叫您的服务之前检查互联网

代码语言:javascript
复制
if (this.checkInternetConnection())
{
    //call service
}
else
{
 //handle no internet. Toast or dialog box.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56521182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档