Android10自動(dòng)連接WiFi問(wèn)題的解決
說(shuō)明:
本文主要說(shuō)明掃碼之后自動(dòng)連接WiFi的一些處理,掃碼的流程相對(duì)簡(jiǎn)單,網(wǎng)上教程也比較多,對(duì)于目前Android各個(gè)版本也沒(méi)有太多變化。
問(wèn)題描述:
最近在做項(xiàng)目的時(shí)候,發(fā)現(xiàn)以前的項(xiàng)目有掃描二維碼自動(dòng)連接WiFi的功能,設(shè)備改了生成二維碼的方式,然后發(fā)現(xiàn)手機(jī)無(wú)法自動(dòng)連接WiFi了。
問(wèn)題原因:
經(jīng)過(guò)代碼調(diào)試發(fā)現(xiàn):(我都是真機(jī)調(diào)試)
wifiManager.addNetwork(WifiConfiguration);
在添加WiFi的時(shí)候,這行代碼始終返回-1,換用同事手機(jī)竟然神奇的可以連接,然后一臉蒙蔽,裂開(kāi)了,不怕有問(wèn)題,就怕有的有問(wèn)題,有的沒(méi)問(wèn)題。
問(wèn)題解決:
區(qū)別:我測(cè)試手機(jī) 小米10 android Q(andorid 10)的系統(tǒng),同事手機(jī)榮耀 android P的系統(tǒng),大膽猜測(cè)是不是android 10又搞了什么奇怪的東西
根因:皇天不負(fù)有心人,上代碼:
/**
* Add a new network description to the set of configured networks.
* The {@code networkId} field of the supplied configuration object
* is ignored.
* <p/>
* The new network will be marked DISABLED by default. To enable it,
* called {@link #enableNetwork}.
*
* @param config the set of variables that describe the configuration,
* contained in a {@link WifiConfiguration} object.
* If the {@link WifiConfiguration} has an Http Proxy set
* the calling app must be System, or be provisioned as the Profile or Device Owner.
* @return the ID of the newly created network description. This is used in
* other operations to specified the network to be acted upon.
* Returns {@code -1} on failure.
*
* @deprecated
* a) See {@link WifiNetworkSpecifier.Builder#build()} for new
* mechanism to trigger connection to a Wi-Fi network.
* b) See {@link #addNetworkSuggestions(List)},
* {@link #removeNetworkSuggestions(List)} for new API to add Wi-Fi networks for consideration
* when auto-connecting to wifi.
* <b>Compatibility Note:</b> For applications targeting
* {@link android.os.Build.VERSION_CODES#Q} or above, this API will always return {@code -1}.
*/
@Deprecated
public int addNetwork(WifiConfiguration config) {
if (config == null) {
return -1;
}
config.networkId = -1;
return addOrUpdateNetwork(config);
}
這是WifiManager.class中addNetwork方法的描述,注意注釋中最后一行
{@link android.os.Build.VERSION_CODES#Q} or above, this API will always return {@code -1}.
android Q或者更高的版本,這個(gè)方法始終返回-1,至此問(wèn)題原因分析完畢,接下來(lái)開(kāi)始解決:官網(wǎng)一頓操作:Android 10 的新方案如下連接:https://developer.android.google.cn/guide/topics/connectivity/wifi-bootstrap
代碼如下:
public void test()
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
{
NetworkSpecifier specifier =
new WifiNetworkSpecifier.Builder()
.setSsidPattern(new PatternMatcher("此處WiFi名稱", PatternMatcher.PATTERN_PREFIX))
.setWpa2Passphrase("此處WiFi密碼")
.build();
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// do success processing here..
}
@Override
public void onUnavailable() {
// do failure processing here..
}
};
connectivityManager.requestNetwork(request, networkCallback);
// Release the request when done.
// connectivityManager.unregisterNetworkCallback(networkCallback);
}
}
注:我用的是WPA的 加密模式,親測(cè)可用。至此完結(jié),撒花。
到此這篇關(guān)于Android10自動(dòng)連接WiFi問(wèn)題的解決的文章就介紹到這了,更多相關(guān)Android10自動(dòng)連接WiFi內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android中關(guān)于FragmentA嵌套FragmentB的問(wèn)題
這篇文章主要為大家詳細(xì)介紹了Android中關(guān)于FragmentA嵌套FragmentB的問(wèn)題,感興趣的小伙伴們可以參考一下2016-08-08
輕松實(shí)現(xiàn)可擴(kuò)展自定義的Android滾輪時(shí)間選擇控件
這篇文章主要為大家詳細(xì)介紹了可擴(kuò)展自定義的Android滾輪時(shí)間選擇控件,結(jié)合WheelView實(shí)現(xiàn)滾輪選擇日期操作,感興趣的小伙伴們可以參考一下2016-07-07
Jetpack?Compose?實(shí)現(xiàn)一個(gè)圖片選擇框架功能
這篇文章主要介紹了Jetpack?Compose?實(shí)現(xiàn)一個(gè)圖片選擇框架,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
Android中ImageView無(wú)法居中的問(wèn)題解決方法
做UI布局,尤其是遇到比較復(fù)雜的多重LinearLayout嵌套,常常會(huì)被一些比較小的問(wèn)題困擾上半天,比如今天在使用ImageView的時(shí)候,想讓其居中顯示,可是無(wú)論怎樣設(shè)置layout_gravity屬性,都無(wú)法達(dá)到效果2013-06-06
Android ListView之setEmptyView正確使用方法
這篇文章主要介紹了Android ListView之setEmptyView正確使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家使用該方法,需要的朋友可以參考下2017-09-09
Android SharedPreferences存取操作以及封裝詳解
SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來(lái)保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再?gòu)腟haredPreferences中將值取出2021-11-11

