На Android 11 (SDK уровня 30) и выше приложения могут использовать намерение android.provider.Settings.ACTION_WIFI_ADD_NETWORKS
, чтобы направлять пользователя при добавлении одной или нескольких новых сохраненных сетей или конфигураций Passpoint. API также работает как есть для изменения существующих сохраненных конфигураций.
Чтобы сохранить конфигурацию сети или точки доступа, выполните следующие действия:
Создайте намерение
ACTION_WIFI_ADD_NETWORKS
.Создайте одну или несколько конфигураций с помощью
WifiNetworkSuggestion.Builder
. Обратите внимание, что даже если вы используетеWifiNetworkSuggestion
, этот API Intent не связан с API Suggestion .Создайте список массивов конфигураций и прикрепите его к намерению с помощью дополнения
EXTRA_WIFI_NETWORK_LIST
.Выполнить
Activity.startActivityForResult()
, передав намерение.Прослушивайте результат с помощью обратного вызова
Activity.onActivityResult()
.resultCode
может быть одним из следующих:-
Activity.RESULT_OK
: указывает на то, что пользователь принял предложенные сети и сохранил их. -
Activity.RESULT_CANCELED
: указывает на то, что пользователь отклонил предложенные сети.
Если
resultCode
равенRESULT_OK
, то в dataIntent
содержится дополнительныйEXTRA_WIFI_NETWORK_RESULT_LIST
, который содержит массив кодов результатов, указывающих, были ли отдельные конфигурации успешно сохранены. Возможные коды результатов:-
ADD_WIFI_RESULT_SUCCESS
: конфигурация добавлена или успешно обновлена. -
ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED
: ошибка при попытке добавить конфигурацию, например, из-за неправильно сформированной конфигурации. -
ADD_WIFI_RESULT_ALREADY_EXISTS
: запрошенная конфигурация уже существовала, поэтому никаких действий не требовалось.
-
Если запрос выполнен успешно, платформа инициирует подключение к одной из новых сохраненных сетей.
Пример кода
В следующем примере кода показано, как сохранить конфигурацию сети или точки доступа.
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
}
}
}
На Android 11 (SDK уровня 30) и выше приложения могут использовать намерение android.provider.Settings.ACTION_WIFI_ADD_NETWORKS
, чтобы направлять пользователя при добавлении одной или нескольких новых сохраненных сетей или конфигураций Passpoint. API также работает как есть для изменения существующих сохраненных конфигураций.
Чтобы сохранить конфигурацию сети или точки доступа, выполните следующие действия:
Создайте намерение
ACTION_WIFI_ADD_NETWORKS
.Создайте одну или несколько конфигураций с помощью
WifiNetworkSuggestion.Builder
. Обратите внимание, что даже если вы используетеWifiNetworkSuggestion
, этот API Intent не связан с API Suggestion .Создайте список массивов конфигураций и прикрепите его к намерению с помощью дополнения
EXTRA_WIFI_NETWORK_LIST
.Выполнить
Activity.startActivityForResult()
, передав намерение.Прослушивайте результат с помощью обратного вызова
Activity.onActivityResult()
.resultCode
может быть одним из следующих:-
Activity.RESULT_OK
: указывает на то, что пользователь принял предложенные сети и сохранил их. -
Activity.RESULT_CANCELED
: указывает на то, что пользователь отклонил предложенные сети.
Если
resultCode
равенRESULT_OK
, то в dataIntent
содержится дополнительныйEXTRA_WIFI_NETWORK_RESULT_LIST
, который содержит массив кодов результатов, указывающих, были ли отдельные конфигурации успешно сохранены. Возможные коды результатов:-
ADD_WIFI_RESULT_SUCCESS
: конфигурация добавлена или успешно обновлена. -
ADD_WIFI_RESULT_ADD_OR_UPDATE_FAILED
: ошибка при попытке добавить конфигурацию, например, из-за неправильно сформированной конфигурации. -
ADD_WIFI_RESULT_ALREADY_EXISTS
: запрошенная конфигурация уже существовала, поэтому никаких действий не требовалось.
-
Если запрос выполнен успешно, платформа инициирует подключение к одной из новых сохраненных сетей.
Пример кода
В следующем примере кода показано, как сохранить конфигурацию сети или точки доступа.
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
}
}
}