2014-11-20 3 views
0

Я пытаюсь получить доступ к Google + профиль пользователя и получать его детали, как имя, адрес электронной почты и профиля ПОС, как показано:Получить профиль ПИК Google плюс счета

public void onConnected(Bundle connectionHint) { 
// We've resolved any connection errors. mGoogleApiClient can be used to 
// access Google APIs on behalf of the user. 
mSignInClicked = false; 

if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) { 

    Intent i = new Intent(getApplicationContext(), MainActivity.class); 
    Person currentPerson = Plus.PeopleApi 
      .getCurrentPerson(mGoogleApiClient); 
    String personPhotoUrl = currentPerson.getImage().getUrl(); 
    String personGooglePlusProfile = currentPerson.getUrl(); 
    personPhotoUrl = personPhotoUrl.substring(0, 
      personPhotoUrl.length() - 2) 
      + PROFILE_PIC_SIZE; 
    String email = Plus.AccountApi.getAccountName(mGoogleApiClient); 
    Bitmap image = BitmapFactory.decodeFile(personPhotoUrl); 


    i.putExtra("Google", "Logged in using Google Account"); 
    i.putExtra("GoogleUsername", currentPerson.getDisplayName()); 
    i.putExtra("GoogleEmail", email); 
    i.putExtra("GoogleProfileImage", image); 
    startActivity(i); 

} 

Я могу получить имя, адрес электронной почты но не смог получить свой профиль pic.

Это, как я посылаю профайл к моей следующей деятельности:

Bitmap bitmap = (Bitmap)this.getIntent().getParcelableExtra("GoogleProfileImage"); 
ImageView imageView = (ImageView) findViewById(R.id.imgProfilePic); 
imageView.setImageBitmap(bitmap); 

Может кто-нибудь сказать мне, как я могу получить профиль ПОС и отправить его в мою следующую деятельность?

ответ

1

Вы получаете изображение с сервера, так что вы должны использовать AsyncTask ..

Объявите одну глобальную переменную для Bitmap

Bitmap resultBmp; 

private class GetProfileImage extends AsyncTask<String, Void, Bitmap> { 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 

      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 

     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     resultBmp = result; 
     //bmImage.setImageBitmap(result); 
    } 
} 

Теперь называют эту функцию

new GetProfileImage().execute(personPhotoUrl); 

вместо этого

Bitmap image = BitmapFactory.decodeFile(personPhotoUrl); 

Теперь передайте это resultBmp с именем bitmap в следующее задание.

if(resultBmp!=null) { 
    i.putExtra("GoogleProfileImage", resultBmp); 
} 
+0

@ PiyushGupta-Да, это правда .. Я согласен, но у меня нет этого изображения в моем основном действии. Мне нужно передать это изображение на следующий вид деятельности. Можете ли вы показать мне, как мне это сделать? – coder

+0

@coder Хорошо. Поэтому вам просто нужно удалить этот конструктор public GetProfileImage (ImageView bmImage) { this.bmImage = bmImage; } – Piyush

+0

По-прежнему не получается получить изображение – coder

0
if (mPlusClient.isConnected()) { 

       userImage = (ImageView) mGet_user_data 
         .findViewById(R.id.imageView1); 


       Person currentPerson = ((PlusClient) mPlusClient) 
         .getCurrentPerson(); 

       showImage = currentPerson.getImage().getUrl(); 




       showImage = showImage.substring(0, showImage.length() - 2) 
         + PROFILE_PIC_SIZE; 
       new LoadProfileImage(userImage).execute(showImage); 
       mGet_user_data.show(); 

      } else { 

       Toast.makeText(getApplicationContext(), "Please Sign In", 
         Toast.LENGTH_LONG).show(); 

      } 

Тогда LoadImageProfile

private class LoadProfileImage extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public LoadProfileImage(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

это хорошо работает для меня.

Смежные вопросы