Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android P API 28中不推荐使用的ConnectivityManager.TYPE_WIFI的替代方案是什么?_Android_Android Sdk Manager_Android Api Levels - Fatal编程技术网

Android P API 28中不推荐使用的ConnectivityManager.TYPE_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)时有被

在Android p API 28中不推荐使用。此外,和也不推荐使用

那么,他们有什么选择呢?我知道我们必须使用网络能力类中的方法。但是,我无法将所有内容合并到一个地方,例如如何在NetworkCapabilities类中执行getType(),以及如何在其上添加WIFI和蜂窝数据检查


请协助。

连接管理器。键入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,这是不推荐的替代方案?我已经尝试了上述代码,然后我编写了优化代码,结果是崩溃。所以我提出了一个问题,我需要你的帮助,谢谢