Linearlayout
Facebookのプロフィール写真をアプリケーションの背景として設定しようとしましたが、うまくいきませんでした。私がこれをやろうとした2つの方法は次のとおりです。
最初の方法:プロフィール写真から uri を取得し、drawable に変換しました
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
LinearLayout banner = (LinearLayout)findViewById(R.id.banner);
Profile profile = Profile.getCurrentProfile();
if(profile != null){
// profile_pic_id.setProfileId((profile.getId()));
Drawable d;
Uri uri = profile.getLinkUri();
//also tried profile.getProfilePictureUri(random_num,random_num)
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
d = Drawable.createFromStream(inputStream, uri.toString());
} catch (FileNotFoundException e) {
d = getResources().getDrawable(R.drawable.blue_material);
}
banner.setBackgroundDrawable(d);
}
}
今、これは常に例外をスローしたので、Drawable
私が得るのは blue_material のもの ( Drawable
catch ブロックのセット) です。
2 番目の方法:をに変換し、ProfilePictureView
でImageView
使用getDrawable()
しImageView
ます。
ProfilePictureView profilePictureFB=(ProfilePictureView)findViewById(R.id.pic);
profilePictureFB.setProfileId((profile.getId()));
ImageView fbImage = ( ( ImageView)profilePictureFB.getChildAt( 0));
banner.setBackgroundDrawable(fbImage.getDrawable());
これにより、誰かがプロフィール写真を持っていないときにFacebookが配置するデフォルトの写真を背景に持つことになりました。
そして、 decodeStreamを使用するたびに例外がスローされます (以下の例)。
URL img_url =new URL("https://graph.facebook.com/"+profile.getId()+"/picture?type=normal");
Bitmap bmp =BitmapFactory.decodeStream(img_url.openConnection().getInputStream());//bmp a bitmap
自分で解決したかったので、stackoverflowでこの質問をすることに頼りたくありませんでしたが、非常に長い間試みたので、助けが必要でした.
答えてくれてありがとう:)