web-dev-qa-db-ja.com

ConnectivityManager.getActivenetWorkInfo()/ NetworkInfoはAPI 29で推奨されていません。

NetworkInfo 廃止予定 API 29の場合のようです。

だから私はネットワークが接続されているかどうかを確認するための代替手段を探しています。例えば。代替案

connectivityManager.activeNetworkInfo?.isConnected == true
 _

SideNote:私は今コールバックがあることを知っていますが、この情報を同期的に入手したいのですが。また、もちろん、それをお願いしますが、それが正確な情報ではないかもしれないことを知っています。

4
hrach
private boolean checkInternetConnection(Activity activity) {
    ConnectivityManager connectivityManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        Network network = null;
        if (connectivityManager == null) {
            return false;
        } else {
            network = connectivityManager.getActiveNetwork();
            NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
            if (networkCapabilities == null) {
                return false;
            }
            if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
                    networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                return true;
            }
        }
    } else {
        if (connectivityManager == null) {
            return false;
        }
        if (connectivityManager.getActiveNetworkInfo() == null) {
            return false;
        }
        return connectivityManager.getActiveNetworkInfo().isConnected();
    }
    return false;
}
 _
0
Mahdi Zareei