要解决“Android reCAPTCHA SafetyNet检测对话框取消”的问题,您可以使用以下代码示例:
implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
implementation 'com.google.android.gms:play-services-auth:19.0.0'
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.safetynet.SafetyNet;
import com.google.android.gms.safetynet.SafetyNetApi;
import com.google.android.gms.safetynet.SafetyNetApi.RecaptchaTokenResult;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
public class YourActivity extends AppCompatActivity {
private static final String TAG = "YourActivity";
private static final String SITE_KEY = "your_site_key";
// ...
private void executeSafetyNetCheck() {
SafetyNet.getClient(this).verifyWithRecaptcha(SITE_KEY)
.addOnSuccessListener(this, new OnSuccessListener() {
@Override
public void onSuccess(SafetyNetApi.RecaptchaTokenResponse recaptchaTokenResponse) {
// reCAPTCHA token verification successful
if (!recaptchaTokenResponse.getTokenResult().isEmpty()) {
// Proceed with your app's logic
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// reCAPTCHA token verification failed
if (e instanceof ApiException) {
ApiException apiException = (ApiException) e;
int statusCode = apiException.getStatusCode();
Log.e(TAG, "Error: " + CommonStatusCodes.getStatusCodeString(statusCode));
} else {
Log.e(TAG, "Error: " + e.getMessage());
}
}
});
}
// ...
}
executeSafetyNetCheck()
方法来执行SafetyNet检测。这样,您就可以检测用户是否通过了reCAPTCHA验证,然后根据需要执行相关的逻辑。