问题描述
我正在尝试在 android 中以编程方式连接到 Wifi,但问题是 wifi 正在连接,但互联网无法正常工作,尽管 wifi 有互联网,但在应用程序上却无法正常工作。当我尝试添加 NET_CAP_INTERNET 时,它会捕获块而不是连接到 wifi。我有oneplus手机,在其他一些手机中我也面临这个问题。我也尝试添加 NET_CAP_NO_RESTRICTION 但问题仍然存在。帮我解决这个问题。
对于低于 10 的 android,因为我们没有任何回调,所以我们如何知道用户输入了错误的密码。就像当用户输入错误密码时我们需要做一些事情一样。我们该怎么做?
private void connectToWifi(String ssid,String password) {
WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
try {
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = "\"" + ssid + "\"";
wifiConfig.preSharedKey = "\"" + password + "\"";
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.enableNetwork(netId,true);
if(checkWithCurrentConnectedWifi(ssid))
navController.navigate(R.id.configureWififragment);
else
{
enteRSSidPassManually();
Toast.makeText(getActivity(),R.string.wrongCredentials,Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printstacktrace();
Toast.makeText(getActivity(),R.string.wifi_connection_error,Toast.LENGTH_SHORT).show();
count++;
}
} else {
try {
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(wifiNetworkSpecifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
super.onAvailable(network);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcesstoNetwork(network);
} else {
ConnectivityManager.setProcessDefaultNetwork(network);
}
if(checkWithCurrentConnectedWifi(ssid))
navController.navigate(R.id.configureWififragment);
else
{
Toast.makeText(getActivity(),R.string.notGatewayWifi,Toast.LENGTH_SHORT).show();
}
}
@Override
public void onLosing(@NonNull Network network,int maxmsToLive) {
//Toast.makeText(getActivity(),"on Losing",Toast.LENGTH_SHORT).show();
super.onLosing(network,maxmsToLive);
}
@Override
public void onLost(Network network) {
//Toast.makeText(getActivity(),"onLost",Toast.LENGTH_SHORT).show();
super.onLost(network);
}
@Override
public void onUnavailable() {
super.onUnavailable();
}
};
connectivityManager.requestNetwork(networkRequest,networkCallback);
} catch (Exception e) {
Toast.makeText(getActivity(),Toast.LENGTH_SHORT).show();
count++;
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)