Linearlayout
我一直在尝试将我的 facebook 个人资料图片设置为我的应用程序中的背景,但无济于事。这是我尝试执行此操作的两种方法:
第一种方式:从头像中获取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 块中的集合),所以如果有人知道它为什么一直抛出异常,我将不胜感激。
第二种方式:转换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上问这个问题,因为我想自己解决它,但是我尝试了很长时间,所以我不得不寻求帮助。
感谢任何回答的人:)