在Android应用中显示Google Plus用户个人资料照片

时间:2014-02-11 02:43:22

标签: android google-plus

我试图通过Google+显示登录我的应用的用户的个人资料图片但不知道如何执行此操作。要获取图片(和其他信息),Google会提供代码

@Override
public void onConnected() {
...
if (mPlusClient.getCurrentPerson() != null) {
    Person currentPerson = mPlusClient.getCurrentPerson();
    String personName = currentPerson.getDisplayName();
    String personPhoto = currentPerson.getImage();
    String personGooglePlusProfile = currentPerson.getUrl();
}
}

我知道通常我需要从res/drawable...获取我想要显示的任何图像,但我不知道如何处理personPhoto的值(以某种方式从类型改变了将代码粘贴到Eclipse中时StringImage

3 个答案:

答案 0 :(得分:5)

您需要使用该网址将照片作为位图抓取并将其设置为图像视图。

本文的第4.9节解释了如何制作一个能够做到这一点的asynctask:

http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/

答案 1 :(得分:5)

首先,您需要在app / build.gradle文件中添加此依赖项:

dependencies {compile 'com.github.bumptech.glide:glide:3.8.0'}

此更新后,您的用户界面相应:

private void updateUI(GoogleSignInAccount account) {
    if (account != null){
        text.setText("Sign in as :" +account.getDisplayName());
        email.setText(account.getEmail());
        String imgurl = account.getPhotoUrl().toString();
        Glide.with(this).load(imgurl).into(profile);
        sighIn.setVisibility(View.GONE);
        sighOut.setVisibility(View.VISIBLE);
    }
    else {
        text.setText("signOut");
        sighIn.setVisibility(View.VISIBLE);
        sighOut.setVisibility(View.GONE);
    }
}

答案 2 :(得分:0)

这是适用于我的Android应用程序的解决方案。我是根据Naveen Kumar Yadav的上述答案开发的。

先决条件 -我使用的是Google登录API。 -我有一个XML代码,其ImageView的ID为“ client_dp”

将此依赖项添加到您的应用程序级别的build.gradle文件中

dependencies {compile 'com.github.bumptech.glide:glide:3.8.0'}

然后将此代码添加到您的活动Java文件中

//Firebase get user info
firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser account = firebaseAuth.getCurrentUser();
if (account != null){         
        //Display User Image from Google Account
        //Objects.requireNonNull() prevents getPhotoUrl() from returning a NullPointerException
        String personImage = Objects.requireNonNull(account.getPhotoUrl()).toString();
        ImageView userImage = findViewById(R.id.client_dp);
        Glide.with(this).load(personImage).into(userImage);
    }