Android Q连接WiFi问题



Android Q之后,我通过以下代码连接到WiFi:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
{
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();
final ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// do success processing here..
Log.d(TAG, "onAvailable:" + network);
super.onAvailable(network);
LogUtil.e("network.getSocketFactory()",network.getSocketFactory()+"------->");
boolean b = connectivityManager.bindProcessToNetwork(network);         
}
/**
* 
*/
@Override
public void onLost(Network network) {
super.onLost(network);
Log.e(TAG, "onLost ==>" + network.toString());
}
@Override
public void onUnavailable() {
// do failure processing here..
LogUtil.e("qwe","failed");
}
};
connectivityManager.requestNetwork(request, networkCallback);
}

然而,存在一个问题。连接的WiFi只能在我的应用程序范围内使用。手机或其他应用程序的浏览器无法使用网络。

有人知道问题是什么吗?我希望每个人都能告诉我如何处理它,以便其他应用程序可以使用网络。

非常感谢。

WifiNetworkSpecifier用于本地对等连接。它不提供互联网,只能在您的应用程序中使用。这就是它的设计方式(请参阅此处蓝色背景上的注释(。

要获得在整个设备中工作的互联网连接,请使用Suggestion API(也仅适用于Android 10(。

最新更新