Android中的手机选择器api [英] phone selector api in android

查看:87
本文介绍了Android中的手机选择器api的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用电话选择器API获取电话号码,但响应为空,这是我的代码.

I am trying get phone number using phone selector API, but get empty response, here my code.

GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Auth.CREDENTIALS_API)
            .addConnectionCallbacks(this) 
            .addOnConnectionFailedListener(this) 
            .build();
    googleApiClient.connect();

HintRequest hintRequest = new HintRequest.Builder()
            .setPhoneNumberIdentifierSupported(true)
            .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
            googleApiClient, hintRequest);
    try {
        startIntentSenderForResult(intent.getIntentSender(),
                RESOLVE_HINT, null, 0, 0, 0);
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RESOLVE_HINT) {
        if (resultCode == RESULT_OK) {
            Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
            // credential.getId();  <-- will need to process phone number string

        }
    }
}

以上resultCode始终返回0.

Above resultCode always returns 0.

推荐答案

这是我要做的获取数字的步骤:

Here is what i did to get Number:

注意:我在片段中获取数字.

1)获取GoogleApiClient

1) get GoogleApiClient

private void getCreadenticalApiClient() {
        mCredentialsApiClient = new GoogleApiClient.Builder(getBaseContext())
                .addConnectionCallbacks(this)
                .enableAutoManage(getBaseContext(), this)
                .addApi(Auth.CREDENTIALS_API)
                .build();
    }

2)showHint方法将显示带有数字的弹出窗口:

2) showHint method will show to popup with number:

private void showHint() {
        HintRequest hintRequest = new HintRequest.Builder()
                .setHintPickerConfig(new CredentialPickerConfig.Builder()
                        .setShowCancelButton(true)
                        .build())
                .setPhoneNumberIdentifierSupported(true)
                .build();

        PendingIntent intent =
                Auth.CredentialsApi.getHintPickerIntent(mCredentialsApiClient, hintRequest);
        try {
            startIntentSenderForResult(intent.getIntentSender(), RC_HINT, null, 0, 0, 0,new Bundle());
        } catch (IntentSender.SendIntentException e) {
            Log.e("Login", "Could not start hint picker Intent", e);
        }
    }

3)这是您为View分配编号的地方

3) And this is where you assign number to View

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_HINT) {
            if (resultCode == RESULT_OK) {
                Credential cred = data.getParcelableExtra(Credential.EXTRA_KEY);
                etMobile.setText(cred.getId().substring(3));
            }
        }
    }

最后不要忘记在片段中实现这两个接口:

At last do not forget to implement these two interfaces inside fragment:

GoogleApiClient.ConnectionCallbacks
GoogleApiClient.OnConnectionFailedListener

依赖项:

    implementation 'com.google.android.gms:play-services-base:11.8.0'
    implementation 'com.google.android.gms:play-services-identity:11.8.0'
    implementation 'com.google.android.gms:play-services-auth:11.8.0'
    implementation 'com.google.android.gms:play-services-auth-api-phone:11.8.0'

这篇关于Android中的手机选择器api的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆