网址1:从Facebook获取图片的网址:http://graph.facebook.com/ {fb-user-id} / picture?type = large
网址2:当网址被点击时,Facebook重定向的网址https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/371818_100002856860463_136071413_n.jpg
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本身的一些答案(可能是一个可能的重复),但没有得到任何可以解决这个问题的答案。提前谢谢。
答案 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
答案 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重定向,你仍然需要手动处理它。