Google Sign Inを使用してGoogleSignInAccountのインスタンスを取得していますが、ユーザー名とメールを問題なく正しく読み込むことができるため、正しく設定されています。次に、私はユーザーのプロフィール画像のUriを取得し、それをImageButtonのアイコンとして設定しようとしています。AndroidのビットマップにUriからのGoogle+プロフィール画像を取得する
変数userPhotoは、GoogleSignInAccountから取得したandroid.net.Uriです。写真は、明らかにクリアされ、デバイスには存在しません。
これは私が無駄に今使っているコードです:私は、ファイルのエラーとしてスローリンクをたどる場合
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)
:
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();
}
これは私が取得エラーです私は写真を見つけられませんでした(私はbtwです):https://lh5.googleusercontent.com/-s7XGuonbDRk/AAAAAAAAAAI/AAAAAAAAFv8/htGjmtY1xD8/photo.jpg 質問は本当に上のコードがうまくいかず、Uriからビットマップを取得するもう1つの方法はありますか?
もちろん、Uriの写真のURLを取得してデバイスにダウンロードすることはできますが、これを行う必要はありません。それがあなたが知っている唯一の解決策であれば、URLファイルをダウンロードする方法と、ダウンロードしたURLをビットマップに変換する方法の作業コードサンプルを提供してください。
ありがとう、ありがとう、ありがとう!完璧に働いた! :D ImageViewにする必要はなく、ピカソもImageButtonで直接動作します。 :) –