1、Android Q之后Wi-Fi连接要调用,如果用之前的方法无法连接对应的网络
@RequiresApi(api = Build.VERSION_CODES.Q)
public void wifiConnectAndroidQ(String ssid, String password)
{
NetworkSpecifier specifier =
new WifiNetworkSpecifier.Builder()
.setSsidPattern(new PatternMatcher(ssid, PatternMatcher.PATTERN_PREFIX))
.setWpa2Passphrase(password)
.build();
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager)
getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// do success processing here..
// Log.e("MainActivity","onavaliable:"+wifiManager.getConnectionInfo().);
}
@Override
public void onUnavailable() {
// do failure processing here..
}
};
connectivityManager.requestNetwork(request, networkCallback);
// Release the request when done.
// connectivityManager.unregisterNetworkCallback(networkCallback);
}
2、AndroidQ之后判断网络是否连接
private boolean isWifiEnable() {
ConnectivityManager cm = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT>=29) {
if (cm != null) {
NetworkCapabilities nc = cm.getNetworkCapabilities(cm.getActiveNetwork());
boolean boo = nc != null && nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) && nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
Log.e("MainActivity","iswifienable:"+boo);
return boo;
} else {
Log.e("MainActivity","iswifienable:"+false);
return false;
}
} else {
boolean boo = cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
Log.e("MainActivity","iswifienable:"+boo);
return boo;
}
}
3、如果当前连接的Wi-Fi在系统Wi-Fi设置中取消保存,应用能接收到Wi-Fi变动,但是下面方法返回的ssid还是取消保存的Wi-Fi,
wifiInfo.getSSID()
需要再判断下下面是不是-1
wifiInfo.getNetworkId()
4、Android Q之后禁用三方应用打开和关闭Wi-Fi
