如何解决Android无法以编程方式连接到WIFI
我编写了一个应与接入点连接的应用。这是我的代码:
网络请求
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
builder.setSsid(String.format("\"%s\"",accessPoint));
builder.setWpa2Passphrase(String.format("\"%s\"",NETWORKPASSWORD));
WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();
NetworkRequest.Builder networkbuilder = new NetworkRequest.Builder();
networkbuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
networkbuilder.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
networkbuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
networkbuilder.setNetworkSpecifier(wifiNetworkSpecifier);
NetworkRequest nr = networkbuilder.build();
cm.requestNetwork(nr,callback,5000);
}
网络回调
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback()
{
@Override
public void onUnavailable()
{
Log.d("NETWORKCALLBACK","Unavailable");
try
{
cm.unregisterNetworkCallback(this);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
@Override
public void onLost(Network network)
{
Log.d("NETWORKCALLBACK","Lost");
try
{
cm.unregisterNetworkCallback(this);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
@Override
public void onCapabilitiesChanged(Network network,NetworkCapabilities networkCapabilities)
{
Log.d("NETWORKCALLBACK","onCapabilitiesChanges");
}
@Override
public void onLinkPropertiesChanged(Network network,LinkProperties linkProperties)
{
Log.d("NETWORKCALLBACK","onLinkPropertiesChanges");
}
@Override
public void onBlockedStatusChanged(Network network,boolean blocked)
{
Log.d("NETWORKCALLBACK","onBlockedStatusChanged");
}
@Override
public void onAvailable(Network network)
{
Log.d("NETWORKCALLBACK","Available");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
cm.bindProcessToNetwork(network);
}
else
{
ConnectivityManager.setProcessDefaultNetwork(network);
}
try
{
cm.unregisterNetworkCallback(this);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
};
我的问题是,由于我的 NetworkRequest 超时,NetworkCallback 总是进入 onUnavailable 方法。如果我删除超时,则永远不会调用 NetworkCallback。
我使用 Android Q。
有人可以帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。