Ich benutze Google+ Anmelden, um eine Instanz von GoogleSignInAccount zu erhalten und den Namen und die E-Mail-Adresse des Nutzers problemlos zu laden, damit ich weiß, dass er korrekt eingerichtet ist. Dann bekomme ich das Uri des Benutzerprofilbildes und versuche das als Icon für einen ImageButton einzustellen.Google+ Profilbild von Uri nach Bitmap auf Android importieren
Die Variable userPhoto ist ein android.net.Uri von GoogleSignInAccount gegriffen. Das Foto, um klar zu sein, ist nicht auf dem Gerät vorhanden.
Dies ist der Code, den ich ohne Erfolg gerade jetzt bin:
profileButton = (ImageButton) navHeaderView.findViewById(R.id.navHeaderMainImageButton);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), userPhoto);
profileButton.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
Dies ist der Fehler, den ich bekommen:
W/System.err: java.io.FileNotFoundException: No content provider: https://lh5.googleusercontent.com/-s7XGuonbDRk/AAAAAAAAAAI/AAAAAAAAFv8/htGjmtY1xD8/photo.jpg
W/System.err: at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1117)
W/System.err: at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:970)
W/System.err: at android.content.ContentResolver.openInputStream(ContentResolver.java:695)
W/System.err: at android.provider.MediaStore$Images$Media.getBitmap(MediaStore.java:859)
W/System.err: at com.seranth.sertutor.MainActivity.onCreate(MainActivity.java:136)
W/System.err: at android.app.Activity.performCreate(Activity.java:6500)
W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
W/System.err: at android.app.ActivityThread.access$1000(ActivityThread.java:198)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:145)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6837)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
W/Resources: Converting to string: TypedValue{t=0x5/d=0x3801 a=1 r=0x10500d1}
W/OpenGLRenderer: Program(5ea33b00) : invalid binary - source difference(vs(201:201)/fs(94:36705)-b0000000800000000)
Wenn ich Sie auf den Link als Fehler für Datei geworfen nicht gefunden Ich finde das Foto (das bin ich übrigens): https://lh5.googleusercontent.com/-s7XGuonbDRk/AAAAAAAAAAI/AAAAAAAAFv8/htGjmtY1xD8/photo.jpg
Also die Frage ist jetzt wirklich, warum funktioniert der obige Code nicht und gibt es eine andere Möglichkeit, eine Bitmap von einem Uri zu bekommen?
Ich kann natürlich die URL des Fotos von der Uri bekommen und dann auf das Gerät herunterladen, aber ich hoffe, dass ich das nicht machen muss. Wenn das die einzige Lösung ist, die Sie kennen, dann liefern Sie bitte Arbeitscode-Beispiele, wie Sie eine URL-Datei herunterladen UND wie Sie die heruntergeladene URL in eine Bitmap konvertieren.
Danke danke danke! Arbeitete perfekt! : D Musste es nicht einmal zu einem ImageView machen, Picasso arbeitet auch direkt auf ImageButtons. :) –