Facebook个人资料图片未在Android图片视图中显示

时间:2014-04-11 07:22:06

标签: java android facebook image facebook-graph-api

Facebook个人资料图片未显示在图片视图android中。这可能是因为从facebook获取图像的URL即URL1重定向到某个其他位置以给出图像。当我使用重定向的URL(即URL2)直接加载图像时,它可以正常工作。

获取位图的代码:

    Bitmap b = null;

    URL url = null;
    try {
        url = new URL(image_path);
        URLConnection dd = url.openConnection();
            b = BitmapFactory.decodeStream(dd.getInputStream());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

我已经google了很多,我得到了stackoverflow本身的一些答案(可能是一个可能的重复),但没有得到任何可以解决这个问题的答案。提前谢谢。

3 个答案:

答案 0 :(得分:5)

您可以使用facebook ProfilePictureView而不是Imageview

来实现它
<com.facebook.login.widget.ProfilePictureView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    facebook:preset_size="small"/>

之后你可以在代码中设置这样的facebook id

ProfilePictureView profilePictureView;

profilePictureView = (ProfilePictureView)findViewById(R.id.friendProfilePicture);

profilePictureView.setProfileId(userId);

它有效..
您也可以将ProfilePictureView

的大小设置为small / normal / large / custom

答案 1 :(得分:2)

下面 -

  

当原始和重定向协议相同时,自动重定向会自动生效。

这就是原因,您的URL2工作但不是URL1

因此,如果您尝试从 https 而不是http:“https://graph.facebook.com/USER_ID/picture”加载图片;由于图片的网址是“https://fbcdn-profile-a.akamaihd.net/ ....”,BitmapFactory.decodeStream会再次使用,以获取位图。

希望有所帮助。祝你好运。

答案 2 :(得分:0)

经过一些谷歌搜索后,我在这里找到了答案:http://www.mkyong.com/java/java-httpurlconnection-follow-redirect-example/

这解决了我的问题。

HttpURLConnection的跟随重定向只是一个指标,实际上它不会帮助你进行“真正的”http重定向,你仍然需要手动处理它。