用户身份服务(Identity Kit)为用户提供统一的地址管理服务,您可通过用户授权直接获取地址信息,高效便利。
在这个codelab中,你将使用已经创建好的Demo Project实现对Identity Kit开放服务的API调用,通过Demo Project你可以体验到:
调用Identity Kit获取用户地址API及处理响应过程。
Android基础开发能力
集成HUAWEI HMS Core能力,您需要完成以下准备工作:
下载并解压Identity_Demo.zip。
dependencies {
implementation 'com.huawei.hms:identity:{version}'
}
配置混淆脚本,在"app/proguard-rules.pro"文件中添加如下配置:
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
private void getUserAddress() {
UserAddressRequest req = new UserAddressRequest();
Task<GetUserAddressResult> task = Address.getAddressClient(this).getUserAddress(req);
task.addOnSuccessListener(new OnSuccessListener<GetUserAddressResult>() {
@Override
public void onSuccess(GetUserAddressResult result) {
Log.i(TAG, "onSuccess result code:" + result.getReturnCode());
try {
startActivityForResult(result);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Log.i(TAG, "on Failed result code:" + e.getMessage());
}
});
}
private void startActivityForResult(GetUserAddressResult result) throws IntentSender.SendIntentException {
Status status = result.getStatus();
if (result.getReturnCode() == 0 && status.hasResolution()) {
Log.i(TAG, "the result had resolution.");
status.startResolutionForResult(this, GET_ADDRESS);
} else {
Log.i(TAG, "the response is wrong, the return code is " + result.getReturnCode());
}
}
// ToDO:user address query button
queryAddrButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getUserAddress();
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ToDo:override the onActivityResult
Log.i(TAG, "onActivityResult requestCode " + requestCode + " resultCode " + resultCode);
switch (requestCode) {
case GET_ADDRESS:
switch (resultCode) {
case Activity.RESULT_OK:
UserAddress userAddress = UserAddress.parseIntent(data);
if (userAddress != null) {
StringBuilder sb = new StringBuilder();
sb.append("name:" + userAddress.getName() + ",");
sb.append("city:" + userAddress.getAdministrativeArea() + ",");
sb.append("area:" + userAddress.getLocality() + ",");
sb.append("address:" + userAddress.getAddressLine1() + userAddress.getAddressLine2() + ",");
sb.append("phone:" + userAddress.getPhoneNumber());
Log.i(TAG, "user address is " + sb.toString());
textView.setText(sb.toString());
} else {
textView.setText("Failed to get user address.");
}
break;
case Activity.RESULT_CANCELED:
break;
default:
Log.i(TAG, "result is wrong, result code is " + resultCode);
break;
}
default:
break;
}
}
测试开发完成后,点击,运行Android Studio工程打包生成APK,并安装在测试手机上,运行效果如下图所示:
干得好,您已经成功完成了codelab并学到了: