네트워크 및 Passpoint 구성 저장

Android 11 (SDK 수준 30) 이상에서는 앱이 android.provider.Settings.ACTION_WIFI_ADD_NETWORKS 드림 사용자에게 하나 이상의 저장된 네트워크 또는 Passpoint 구성 또한 API는 있는 그대로 작동하여 기존에 저장된 구성할 수 있습니다

네트워크 또는 Passpoint 구성을 저장하려면 다음 단계를 따르세요.

  1. ACTION_WIFI_ADD_NETWORKS 인텐트를 만듭니다.

  2. 다음을 사용하여 하나 이상의 구성을 만듭니다. WifiNetworkSuggestion.Builder WifiNetworkSuggestion를 사용하더라도 이 Intent API는 Suggestion API와는 관련이 없습니다.

  3. 구성의 parcelable 배열 목록을 만들어 인텐트를 EXTRA_WIFI_NETWORK_LIST 드림 추가.

  4. 실행 Activity.startActivityForResult()님, 인텐트를 전달합니다.

  5. 다음을 사용하여 결과를 수신합니다. Activity.onActivityResult() 드림 있습니다.

    resultCode는 다음 중 하나일 수 있습니다.

    • Activity.RESULT_OK: 사용자가 제안된 네트워크를 수락하고 저장했음을 나타냅니다.
    • Activity.RESULT_CANCELED: 이는 사용자가 제안된 네트워크를 거부했음을 나타냅니다.

    resultCodeRESULT_OK이면 데이터 Intent에 다음이 포함됩니다. EXTRA_WIFI_NETWORK_RESULT_LIST 엑스트라로, 여기에는 개별 콘텐츠가 있는지 여부를 나타내는 결과 코드 배열이 구성을 저장했습니다. 가능한 결과 코드는 다음과 같습니다.

  6. 요청이 성공하면 플랫폼에서 저장된 네트워크입니다.

코드 샘플

다음 코드 샘플은 네트워크 또는 Passpoint를 저장하는 방법을 보여줍니다. 구성할 수 있습니다

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
        }
    }
}