ConnectivityManager.TYPE_WIFI は非推奨ですAndroid P API28。また、 NetworkInfo#getType および ConnectivityManager.TYPE_MOBILE も廃止されました。
それで、彼らのための選択肢は何ですか? NetworkCapabilitiesクラスのメソッドを使用する必要があることを理解しました。ただし、NetworkCapabilitiesクラスでgetType()を実行する方法や、WIFIおよびセルラーデータチェックを追加する方法など、すべてを1か所にマージすることはできませんか?
手伝ってください。
_ConnectivityManager.TYPE_WIFI
_は非推奨。 NetworkCapabilities
を使用する必要があります。
これは、ネットワーク選択の古い_ConnectivityManager.TYPE_MOBILE
_メソッドを置き換えます。アプリケーションは高い帯域幅を必要とし、新しい高速ネットワーク(LTEなど)が出現すると陳腐化のリスクがあるため、Wi-Fiの必要性を示すのではなく、アプリケーションは高い帯域幅が必要であることを指定する必要があります。同様に、アプリケーションがバルク転送に非従量制ネットワークを必要とする場合、すべてのセルラーベースの接続が従量制であり、すべてのWi-Fiベースの接続は従わないことを指定できます。
代わりに、アプリケーションは
NetworkCapabilities.hasTransport(int)
または を使用する必要がありますrequestNetwork(NetworkRequest, NetworkCallback)
適切なネットワークを要求します。サポートされているトランスポート用。
この方法で試すことができます
_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));
}
以下の方法を使用してください。19/ 06/2019
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();
}
}