要使用Android谷歌登录API获取手机号码,可以按照以下步骤进行操作:
implementation 'com.google.android.gms:play-services-auth:19.2.0'
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.credentials.Credential;
import com.google.android.gms.auth.api.credentials.CredentialsApi;
import com.google.android.gms.auth.api.credentials.HintRequest;
import com.google.android.gms.auth.api.credentials.IdentityProviders;
import com.google.android.gms.auth.api.credentials.CredentialPickerConfig;
import com.google.android.gms.auth.api.credentials.CredentialRequest;
import com.google.android.gms.auth.api.credentials.CredentialRequestResponse;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
public class MainActivity extends AppCompatActivity {
private static final int RC_HINT = 100;
private GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Auth.CREDENTIALS_API)
.build();
}
public void loginWithGoogle(View view) {
HintRequest hintRequest = new HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.setEmailAddressIdentifierSupported(false)
.setAccountTypes(IdentityProviders.GOOGLE)
.build();
PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(mGoogleApiClient, hintRequest);
try {
startIntentSenderForResult(intent.getIntentSender(), RC_HINT, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_HINT) {
if (resultCode == RESULT_OK) {
Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
String phoneNumber = credential.getId();
// 使用获取到的手机号码进行后续操作
Toast.makeText(this, "手机号码:" + phoneNumber, Toast.LENGTH_SHORT).show();
} else {
Status status = data.getParcelableExtra(Status.EXTRA_KEY);
int statusCode = status.getStatusCode();
// 处理错误情况
Toast.makeText(this, "错误码:" + statusCode, Toast.LENGTH_SHORT).show();
}
}
}
}
以上代码中,我们首先创建了一个GoogleApiClient实例,并在onCreate()方法中进行初始化。然后,在loginWithGoogle()方法中,我们创建了一个HintRequest对象,指定了要获取手机号码的相关配置。最后,我们使用Auth.CredentialsApi.getHintPickerIntent()方法显示一个带有选择器的界面,用户可以选择一个Google账号,该账号的手机号码将会被返回。在onActivityResult()方法中,我们获取到返回的Credential对象,并从中获取手机号码进行后续操作。
请注意,由于Google登录API要求在真机上运行,因此您需要在真机上测试此代码。另外,您还需要确保您已经在设备上登录了Google账号才能获取到手机号码。
上一篇:Android谷歌登录
下一篇:Android谷歌登录警告