由于Android Q不允许WifiManager添加网络,他们建议使用WifiNetworkSpecifier代替。通过WifiNetworkSuggestionBuilder,我已经能够在状态栏上显示通知,让用户加入网络。但是这个API不能满足我的需求,因为我不想让用户必须使用状态栏中的建议。
通过WifiNetworkSpecifier,我也已经能够显示有关加入网络的弹出窗口,并且应用程序还建立了与应用程序的连接。但是该wifi连接似乎仅在应用程序的范围内可用。如何才能克服应用程序的范围,以便其他应用程序和例如浏览器也能够使用这个新建立的连接? 以下是我的代码
通过WifiNetworkSpecifier,我也已经能够显示有关加入网络的弹出窗口,并且应用程序还建立了与应用程序的连接。但是该wifi连接似乎仅在应用程序的范围内可用。如何才能克服应用程序的范围,以便其他应用程序和例如浏览器也能够使用这个新建立的连接? 以下是我的代码
WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
builder.setSsid("abcdefgh");
builder.setWpa2Passphrase("1234567890");
WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();
NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
networkRequestBuilder.setNetworkSpecifier(wifiNetworkSpecifier);
NetworkRequest networkRequest = networkRequestBuilder.build();
ConnectivityManager cm = (ConnectivityManager) App.getInstance().getBaseContext().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
cm.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
//Use this network object to Send request.
//eg - Using OkHttp library to create a service request
super.onAvailable(network);
}
});