Android P API 28中不推荐使用的ConnectivityManager.TYPE_WIFI的替代方案是什么?
在Android p API 28中不推荐使用。此外,和也不推荐使用 那么,他们有什么选择呢?我知道我们必须使用网络能力类中的方法。但是,我无法将所有内容合并到一个地方,例如如何在NetworkCapabilities类中执行getType(),以及如何在其上添加WIFI和蜂窝数据检查Android P API 28中不推荐使用的ConnectivityManager.TYPE_WIFI的替代方案是什么?,android,android-sdk-manager,android-api-levels,Android,Android Sdk Manager,Android Api Levels,在Android p API 28中不推荐使用。此外,和也不推荐使用 那么,他们有什么选择呢?我知道我们必须使用网络能力类中的方法。但是,我无法将所有内容合并到一个地方,例如如何在NetworkCapabilities类中执行getType(),以及如何在其上添加WIFI和蜂窝数据检查 请协助。连接管理器。键入WIFI已弃用。你应该使用 这将替换旧的连接管理器。键入\u MOBILE网络选择方法。应用程序应该指定它需要高带宽,而不是因为应用程序需要高带宽,并且在出现新的快速网络(如LTE)时有被
请协助。
连接管理器。键入WIFI
已弃用。你应该使用
这将替换旧的连接管理器。键入\u MOBILE网络选择方法。应用程序应该指定它需要高带宽,而不是因为应用程序需要高带宽,并且在出现新的快速网络(如LTE)时有被淘汰的风险而指示需要Wi-Fi。类似地,如果应用程序需要未计量的网络进行批量传输,它可以指定,而不是假设所有基于蜂窝的连接都已计量,而所有基于Wi-Fi的连接都未计量
应用程序应改为使用
或者请求
适当的网络。用于支持的传输
你可以这样试试
NetworkAgentInfo networkAgent;
int type = ConnectivityManager.TYPE_NONE;
if (networkAgent.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
type = ConnectivityManager.TYPE_MOBILE;
} else if (networkAgent.networkCapabilities.hasTransport(
NetworkCapabilities.TRANSPORT_WIFI)) {
type = ConnectivityManager.TYPE_WIFI;
}
您可以使用以下代码片段检查您是否有Wifi连接或手机网络:
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Network network = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
return capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
}
使用下面的方法。。2019年6月19日
public boolean isconnectedToWifi(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return false;
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
Network network = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
if (capabilities == null) {
return false;
}
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
} else {
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo == null) {
return false;
}
return networkInfo.isConnected();
}
}
@马雷基。这个答案遗漏了一个重要的步骤。。。如何获取networkAgent?请检查以上链接您指的是指向networkAgent信息源代码的链接?这并没有告诉任何人如何在运行时获取它的实例。什么是NetworkAgetInfo?另外,您正在再次使用ConnectivityManager.TYPE_WIFI,这是不推荐的替代方案?我已经尝试了上述代码,然后我编写了优化代码,结果是崩溃。所以我提出了一个问题,我需要你的帮助,谢谢