我正在创建webDialog
以便在facebook
上发送好友请求。我可以创建网络对话框并发送好友请求,但我不知道要解析捆绑日期。一旦请求发送,如果没有错误,我将以下列方式获得facebook
的响应 Bundle [{to [0] = 100005695389624,to [1] = 100002812207673,request = 333965433373671}] 。我想解析这些数据。我怎么能这样做。
我可以从上面的数据中获取request
但是如何从中获取to
参数。如果有人有任何想法,请告诉我。
我尝试了以下方式。
final String requestId = values.getString("request"); // This value retrieved properly.
char at[] = values.getString("to").toCharArray(); // returns null
String str[] = values.getStringArray("to"); // returns null
String s = values.getString("to"); // return null
答案 0 :(得分:8)
我正在创建WebDialog
来邀请facebook
的朋友。作为回应,我将以下列格式获取包中的值。
Bundle[{to[0]=10045667789624, to[1]=1353002812207673, request=1234555}]
所以我在解析bundle的数据时遇到了问题。我以下面的方式解决了它。
Bundle params = new Bundle();
params.putString("message", "Message from Android App.");
WebDialog requestsDialog = (
new WebDialog.RequestsDialogBuilder(ChatRoom.this,
Session.getActiveSession(),
params))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,FacebookException error) {
if( values != null)
{
final String requestId = values.getString("request");
ArrayList<String> friendsId = new ArrayList<String>();
int i = 0;
String to;
do {
to = values.getString("to[" +i + "]");
if(!TextUtils.isEmpty(to))
{
friendsId.add(to);
}
i++;
} while (to != null);
if (requestId != null) {
Toast.makeText(ChatRoom.this.getApplicationContext(),"Request sent",Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(ChatRoom.this.getApplicationContext(),"Request cancelled",Toast.LENGTH_SHORT).show();
}
}
toggle();
}
})
.build();
requestsDialog.show();
希望这可以帮助某人。
答案 1 :(得分:2)
我不知道它是否可行,但尝试将to数组视为String。
final String requestId = values.getString("request");
final String to0 = values.getString("to[0]");
final String to1 = values.getString("to[1]");
如果你不知道你有多少个字符串,你可以创建一个简单的while循环并继续,直到它返回null。这不是一个优雅的解决方案,但它是我现在唯一可以提出的解决方案。如果您对捆绑包有更多了解,可以找到更好的解决方案。
ArrayList<String> to = new ArrayList<String>();
int i = 0;
while (true) {
String x = values.getString("to["+i+"]");
if (x == null) {
break;
} else {
to.add(x);
i++;
}
}