![](/img/trans.png)
[英]How to get facebook friends list using facebook sdk in android
[英]Facebook new sdk - not able to get friends list
我正在使用新的Facebook-sdk
并使用hackbook示例来使用FriendsList.java
文件获取朋友列表。 Friendlist Activity
每次都被杀死,而我在logcat中得到此错误:
11-18 16:20:51.141: ERROR/JavaBinder(7881): !!! FAILED BINDER TRANSACTION !!!.
每次都可以重现该问题。 注意配置文件中的朋友数是4500。
11-18 16:19:27.932: DEBUG/Facebook-Util(7881): GET URL: https://api.facebook.com/restserver.php?access_token=**********&query=select+name%2C+current_location%2C+uid%2C+pic_square+from+user+where+uid+in+%28select+uid2+from+friend+where+uid1%3Dme%28%29%29+order+by+name&method=fql.query&format=json
11-18 16:20:50.982: WARN/InputManagerService(3426): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4665a200
11-18 16:20:51.141: ERROR/JavaBinder(7881): !!! FAILED BINDER TRANSACTION !!!
请帮忙!
我没有发布任何代码,因为我正在使用Facebook上提供的Facebook sdk示例代码-Android的Hackbook示例。 最后,我找到了问题并解决了。
首先,问题不在facebook sdk中,而与响应的大小有关。 如果在Facebook中有超过4k的朋友,并且使用fql.query或graph方法查询朋友列表,则Json响应大小将超过500kb。 现在,如果您尝试通过IPC(额外的意图数据)将此500kb响应传递给另一个活动,则该过程将失败,原因是!! 活页夹交易失败! 有关联名交易失败的更多信息,请参见联名交易失败讨论。
我如何解决此问题:我使用与上面发布的链接相同的过程。 即将响应写入文件,然后将文件链接发送到其他活动,而不是完整的500kb大小的响应。
以下代码对我来说更好。 此代码提供朋友列表。
public JSONObject getFrienList(String token)
{
InputStream is = null;
String result = "";
JSONObject jArray = null;
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httppost = new HttpGet("https://graph.facebook.com/me/friends? access_token=" + token);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(Exception e)
{
Log.e("ERROR", "Error in http connection "+e.toString());
}
//convert response to string
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result=sb.toString();
Log.i("RESULT",result);
}
catch(Exception e)
{
Log.e("ERROR", "Error converting result "+e.toString());
}
//try parse the string to a JSON object
try
{
jArray = new JSONObject(result);
Log.i("RESULT","JSON ARRAY"+jArray.toString());
}
catch(JSONException e)
{
Log.e("ERROR", "Error parsing data "+e.toString());
}
return jArray;
}
我现在不知道您在做什么。.因为您没有发布任何代码..但这是我得到朋友列表的方式。
HttpGet httpget = new HttpGet("https://graph.facebook.com/me/friends?access_token=" + mAccessToken);
HttpResponse response;
try
{
response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null)
{
result = EntityUtils.toString(entity);
Log.i("Request String",result);
parseJSON(result);
}
}
catch (Exception e) {
e.printStackTrace();
}
private void parseJSON(String data1)
{
try{
JSONObject jObj = new JSONObject(data1);if(jObj==null) Log.i("-----------","JOBJ IS NULL");
JSONArray jObjArr= jObj.optJSONArray("data");if(jObjArr==null) Log.i("-----------","JOBJARR IS NULL");
int lon = jObjArr.length();
String frnd_data[][] = new String[jObjArr.length()][2];
entity1 = new String[jObjArr.length()];
Log.i("Frineds >>", "" + lon);
for(int i = 0 ;i< lon; i++)
{
JSONObject tmp = jObjArr.optJSONObject(i);
frnd_data[i][0]=tmp.getString("name");
frnd_data[i][1]=tmp.getString("id");
Log.i("Name", frnd_data[i][0]);
Log.i("Name AND Id" , frnd_data[i][0] +" "+ frnd_data[i][1]);
entity1[i] = getFriend("https://graph.facebook.com/"+frnd_data[i][1]+"?access_token="+mAccessToken);
}
}
catch (Exception e)
{
Log.i("Exception1 >> ", e.toString());
}
}
public String getFriend(String tmpurl)
{
HttpClient httpclient = new DefaultHttpClient();
String temp_result = null;
HttpGet httpget = new HttpGet(tmpurl);
HttpResponse response;
try
{
response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null)
{
temp_result = EntityUtils.toString(entity);
Log.i("Request String",temp_result);
return temp_result;
}
}
catch (Exception e)
{
e.printStackTrace();
}
return temp_result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.