gpt4 book ai didi

Android Q 10 连接到网络 WifiNetworkSpecifier

转载 作者:行者123 更新时间:2023-12-01 17:43:26 36 4
gpt4 key购买 nike

由于 Android Q 不允许 WifiManager 添加网络,因此他们建议改用 WifiNetworkSpecifier。使用 WifiNetworkSuggestionBuilder,我已经能够在状态栏上显示通知,该用户可以加入网络。但这个 API 不能满足我的要求,因为我不希望用户必须使用状态栏中的建议。

使用 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);
}
});

最佳答案

聚会有点晚了,但也许它会对遇到此问题的其他人有所帮助。

看来你是对的。在android Q中,一旦应用程序被杀死,系统会自动断开我们通过WifiNetworkSpecifier连接的WiFi网络,并且没有办法阻止系统这样做。

我想出的最佳解决方案是将 WifiNetworkSpecifier 与 WifiNetworkSuggestion 结合使用。这允许我们在使用应用程序时使用 WifiNetworkSpecifier,并在系统因应用程序终止而与我们的 WiFi 断开连接时建议系统自动连接的 WiFi 网络。

这里是一些示例代码:

    WifiNetworkSuggestion.Builder builder = new WifiNetworkSuggestion.Builder()
.setSsid("YOUR_SSID")
.setWpa2Passphrase("YOUR_PASSWORD")
WifiNetworkSuggestion suggestion = builder.build();

ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
list.add(suggestion);

WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
int status = manager.addNetworkSuggestions(list);

if (status == STATUS_NETWORK_SUGGESTIONS_SUCCESS) {
//We have successfully added our wifi for the system to consider
}

干杯,

关于Android Q 10 连接到网络 WifiNetworkSpecifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929863/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com