如何从Play Integrity API异常中获取错误代码(非文本提取方式)
解决方案
Play Integrity API抛出的异常属于GoogleApiException类型,你可以将捕获到的Exception强制转换为该类型,直接获取官方定义的错误码,无需解析异常文本:
- 类型转换与错误码获取:将
task.getException()转为GoogleApiException,调用getStatusCode()获取标准化错误码。 - 使用官方常量匹配:利用
IntegrityStatusCodes类中定义的常量(如NONCE_TOO_SHORT)进行判断,避免硬编码错误数字,提升代码可读性和维护性。
修改后的异常处理代码示例:
if(!task.isSuccessful()) { Log.d(LOG_TAG, "!isSuccessful"); Exception e = task.getException(); if (e instanceof GoogleApiException) { GoogleApiException apiException = (GoogleApiException) e; int errorCode = apiException.getStatusCode(); // 用官方常量判断错误类型 switch (errorCode) { case IntegrityStatusCodes.NONCE_TOO_SHORT: Log.d(LOG_TAG, "无效nonce:长度过短"); // 处理该错误逻辑 break; case IntegrityStatusCodes.NONCE_TOO_LONG: Log.d(LOG_TAG, "无效nonce:长度过长"); // 处理该错误逻辑 break; // 其他需要处理的错误码... default: Log.d(LOG_TAG, "未知错误,错误码:" + errorCode); } } else { Log.d(LOG_TAG, "非API异常:" + e.getMessage()); } }
注意事项:
- 需导入对应类:
com.google.android.gms.common.api.GoogleApiException和com.google.android.play.core.integrity.IntegrityStatusCodes - 不同版本的Play Integrity SDK对错误常量的定义可能略有差异,请以你依赖的版本官方文档为准。
内容的提问来源于stack exchange,提问作者user2342558
相关产品推荐
相关产品推荐

