我基本上是想知道在API level 29中使用了NetworkInfo方法之后,如何在android中检查互联网连接状态。
我已经尝试过调用getActiveNetworkInfo方法,但它是无效的,任何快速帮助都是非常感谢的。
我被困在这一点上了..
fun verifyIfNetworkAvailable(activity: AppCompatActivity):Boolean{
var connectivityManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
var networkInfo = connectivityManager.isDefaultNetworkActive
return networkInfo != null && networkInfo.isConnected
}顺便说一下,我正在使用Kotlin。
发布于 2019-06-10 14:15:27
继续这个,PS不是我的,
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
}}
发布于 2019-06-10 14:15:31
NetworkInfo类在API级别29中已弃用。因此,为NetworkInfo返回实例的方法也被弃用。要进一步使用更新的API,您可以关注文档,它说:-
调用者应该改为使用ConnectivityManager.NetworkCallback应用编程接口来了解连接更改,或者切换到使用ConnectivityManager#getNetworkCapabilities或ConnectivityManager#getLinkProperties来同步获取信息。
请查看Network Info和Connectivity Manager官方文档进行使用。
发布于 2019-06-10 16:46:45
你可以像这样检查网络连接。如果您不想检查设备连接性。
第1步添加异步类
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调用此异步任务,这是一个函数。
private boolean checkInternetConnection()
{
try
{
return new GCInternetChecker().execute().get();
}
catch (Exception e)
{
return false;
}
}第3步在呼叫您的服务之前检查互联网
if (this.checkInternetConnection())
{
//call service
}
else
{
//handle no internet. Toast or dialog box.
}https://stackoverflow.com/questions/56521182
复制相似问题