W Androidzie 11 (SDK na poziomie 30) i nowszych aplikacje mogą używać
android.provider.Settings.ACTION_WIFI_ADD_NETWORKS
poprowadzi użytkownika przez dodanie co najmniej jednej zapisanej sieci lub
Konfiguracje protokołu Passpoint. Interfejs API może też modyfikować istniejące zapisane elementy.
konfiguracji.
Aby zapisać sieć lub konfigurację Passpoint, wykonaj te czynności:
Utwórz intencję
ACTION_WIFI_ADD_NETWORKS
.Utwórz co najmniej jedną konfigurację za pomocą:
WifiNetworkSuggestion.Builder
Pamiętaj, że chociaż używasz interfejsuWifiNetworkSuggestion
, ten interfejs Intent API jest niezwiązane z interfejsem Suggestions API.Utwórz listę tablicy z możliwością parzystej i dołącz ją do parametru z intem
EXTRA_WIFI_NETWORK_LIST
dodatkowe.Wykonaj
Activity.startActivityForResult()
przekazywanie intencji.Wykryj wynik za pomocą
Activity.onActivityResult()
oddzwanianie.resultCode
może być jednym z tych elementów:Activity.RESULT_OK
: co oznacza, że użytkownik zaakceptował proponowane sieci i je zapisał.Activity.RESULT_CANCELED
: co oznacza, że użytkownik odrzucił proponowane sieci.
Jeśli
resultCode
toRESULT_OK
, daneIntent
zawierająEXTRA_WIFI_NETWORK_RESULT_LIST
dodatkowo, który zawiera tablicę kodów wyników wskazujących, czy dana osoba Konfiguracje zostały zapisane. Możliwe kody wyników:ADD_WIFI_RESULT_SUCCESS
: Konfiguracja została dodana lub zaktualizowana.ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED
: podczas próby dodania konfiguracji, na przykład z powodu nieprawidłowego formatu. konfiguracji.ADD_WIFI_RESULT_ALREADY_EXISTS
: żądana konfiguracja już istniała, więc żadne działanie nie było konieczne.
Jeśli żądanie zostanie zrealizowane, platforma wywoła połączenie z jednym z tych z nowo zapisanymi sieciami.
Przykładowy kod
Poniższy przykładowy kod pokazuje, jak zapisać sieć lub Passpoint konfiguracji.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
}
fun startOperation() {
val suggestions = ArrayList<WifiNetworkSuggestion>()
// WPA2 configuration
suggestions.add(
WifiNetworkSuggestion.Builder()
.setSsid("test111111")
.setWpa2Passphrase("test123456")
.build()
)
// Open configuration
suggestions.add(
WifiNetworkSuggestion.Builder()
.setSsid("test222222")
.build()
)
// Passpoint configuration
val config = PasspointConfiguration()
config.credential = Credential().apply {
realm = "realm.example.com"
simCredential = Credential.SimCredential().apply {
eapType = 18
imsi = "123456*"
}
}
config.homeSp = HomeSp().apply {
fqdn = "test1.example.com"
friendlyName = "Some Friendly Name"
}
suggestions.add(
WifiNetworkSuggestion.Builder()
.setPasspointConfig(config)
.build())
// Create intent
val bundle = Bundle()
bundle.putParcelableArrayList(EXTRA_WIFI_NETWORK_LIST, suggestions)
val intent = Intent(ACTION_WIFI_ADD_NETWORKS)
intent.putExtras(bundle)
// Launch intent
startActivityForResult(intent, 0)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == RESULT_OK) {
// user agreed to save configurations: still need to check individual results
if (data != null && data.hasExtra(EXTRA_WIFI_NETWORK_RESULT_LIST)) {
for (code in data.getIntegerArrayListExtra(EXTRA_WIFI_NETWORK_RESULT_LIST)) {
when (code) {
ADD_WIFI_RESULT_SUCCESS ->
... // Configuration saved or modified
ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED ->
... // Something went wrong - invalid configuration
ADD_WIFI_RESULT_ALREADY_EXISTS ->
... // Configuration existed (as-is) on device, nothing changed
else ->
... // Other errors
}
}
}
} else {
// User refused to save configurations
}
}
}