目录

App Development

Obtaining a User Address

[h2]Function

This API is used to display the address selection page when your app needs to use the user's address-related information, such as name, contact, and detailed address. After the user selects an address on the page, the API returns the address to the app.

[h2]Development Procedure

  1. Build a UserAddressRequest object to call the getUserAddress API.
    The following is the sample code:
    Java
    // Instantiate a UserAddressRequest object.
    UserAddressRequest req = new UserAddressRequest();
    // Call the getUserAddress API.
    Task<GetUserAddressResult> task = Address.getAddressClient(this).getUserAddress(req);
    task.addOnSuccessListener(new OnSuccessListener<GetUserAddressResult>() {
    	@Override
    	public void onSuccess(GetUserAddressResult result) {
    		// Callback upon success.
    		Log.i("IdentityKit", "onSuccess result code:" + result.getReturnCode());
    		try {
    			startActivityForResult(result);
    		} catch (IntentSender.SendIntentException e) {
    			e.printStackTrace();
    		}
    	}
    }).addOnFailureListener(new OnFailureListener() {
    	@Override
    	public void onFailure(Exception e) {
    		// Callback upon failure.
    		Log.i("IdentityKit", "on Failed result code:" + e.getMessage());
    	}
    });
    Kotlin
    // Call the getUserAddress API.
    val task = Address.getAddressClient(this@MainActivity).getUserAddress(UserAddressRequest())
    task.apply {
        addOnSuccessListener {
            // Callback upon success.
            Log.i("IdentityKit", "onSuccess result code: ${it.returnCode}")
            try {
                startActivityForResult(it)
            } catch (e: IntentSender.SendIntentException) {
                e.printStackTrace()
            }
        }.addOnFailureListener {
            // Callback upon failure.
            Log.i("IdentityKit", "onFailed resultCode: ${it.message}")
        }
    }
  2. Display the address selection page by calling the startResolutionForResult method of Status.
    The following is the sample code:
    Java
    private void startActivityForResult(GetUserAddressResult result) throws IntentSender.SendIntentException {
    	Status status = result.getStatus();
    	if (result.getReturnCode() == 0 && status.hasResolution()) {
    		Log.i("IdentityKit", "the result had resolution.");
    		status.startResolutionForResult(this, 1000);
    	} else {
    		Log.i("IdentityKit", "the result hasn't resolution.");
    	}
    }
    Kotlin
    private fun startActivityForResult(result: GetUserAddressResult) {
        val status: Status = result.status
        if (result.returnCode == 0 && status.hasResolution()) {
            Log.i("IdentityKit", "the result has resolution")
            status.startResolutionForResult(this@MainActivity, 1000)
        } else {
            Log.i("IdentityKit", "the result hasn't resolution")
        }
    }
  3. After the user selects an address, call the parseIntent method of UserAddress in onActivityResult of the page to obtain the address from the returned result.
    The following is the sample code:
    Java
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    	Log.i("IdentityKit", "requestCode=" + requestCode + ", resultCode=" + resultCode);
    	if (resultCode == Activity.RESULT_OK) {
    		UserAddress userAddress = UserAddress.parseIntent(data);
    		// Handle the service.
    	} else {
    		// Handle the error.
    	}
    }
    Kotlin
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        Log.i("IdentityKit", "requestCode = $requestCode, resultCode = $resultCode");
        when (resultCode) {
            Activity.RESULT_OK -> {
                val userAddress: UserAddress? = UserAddress.parseIntent(data)
                 // Handle the service.
            }else -> {
                // Handle the error.
            }
        }
    }