如何通过Facebook Android SDK向朋友发送应用请求

Pra*_*chi 6 android facebook facebook-graph-api

目前我正在开发一款Android应用程序,因为我正在使用Facebook SDK.它可以很好地将消息发布到墙上等,但是通过这个SDK,我无法向其他人发送应用请求.

谁能帮我吗?

这是我的代码片段:

Bundle params = new Bundle();
params.putString("message", getString(R.string.request_message));
Utility.mFacebook.dialog(Hackbook.this, "apprequests", params, new AppRequestsListener());
Run Code Online (Sandbox Code Playgroud)

AppRequestsListener:

public class AppRequestsListener extends BaseDialogListener {
    @Override
    public void onComplete(Bundle values) {
        Toast toast = Toast.makeText(getApplicationContext(), "App request sent", Toast.LENGTH_SHORT);
        toast.show();
    }

    @Override
    public void onFacebookError(FacebookError error) {
        Toast.makeText(getApplicationContext(), "Facebook Error: " + error.getMessage(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancel() {
        Toast toast = Toast.makeText(getApplicationContext(), "App request cancelled", Toast.LENGTH_SHORT);
        toast.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

rla*_*ay3 9

从SDK 3.0版开始,您使用WebDialog.以下是如何使用提供的使用所有可用参数的构建器创建一个示例:

private void sendRequestDialog() {
    Bundle params = new Bundle();
    params.putString("title", "Send a Request");
    params.putString("message", "Learn how to make your Android apps social");
    params.putString("to", "12343543,32423534");  // comma seperated list of facebook IDs to preset the recipients. If left out, it will show a Friend Picker.
    params.putString("data",
        "{\"badge_of_awesomeness\":\"1\"," +
        "\"social_karma\":\"5\"}");  // any additional data

    WebDialog requestsDialog = (
        new WebDialog.RequestsDialogBuilder(getActivity(), Session.getActiveSession(), params))
            .setOnCompleteListener(new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values, FacebookException error) {
                    // do something, e.g. show toast message
                }   
            })
            .build();
    requestsDialog.show();
}
Run Code Online (Sandbox Code Playgroud)

参考:Facebook SDK 3.0 for Android:发送请求


Nit*_*mer 3

android sdk 有您可以使用的对话框,当您打开对话框时,您可以指定要打开的对话框。

您可以在对话框文档中查看可用对话框的列表。其中一个对话框是请求对话框,您也可以从 android sdk 打开它,如下所示:

Facebook facebook = new Facebook("YOUR_APP_ID");

....

Bundle params = new Bundle();
params.putString("title", "invite friends");
facebook.dialog(this, "apprequests", params, new DialogListener() {
    @Override
    public void onComplete(Bundle values) {}

    @Override
    public void onFacebookError(FacebookError error) {}

    @Override
    public void onError(DialogError e) {}

    @Override
    public void onCancel() {}
});
Run Code Online (Sandbox Code Playgroud)

您可以为此对话框添加更多参数,使用文档查看您需要什么。


编辑

好的,看看这段代码:

Bundle paramsOut = new Bundle(), paramsIn = this.getIntent().getExtras();
paramsOut.putString("message", paramsIn.getString("message"));
this.facebook.dialog(this, "apprequests", paramsOut, new InviteListener(this));
Run Code Online (Sandbox Code Playgroud)

我使用它并且它对我来说效果很好,应用程序请求正在发送并且用户收到它。由于您的代码非常相似,因此可以安全地假设问题出在不同的地方,因此您应该将代码发布到不同的地方。

那么,您的AppRequestsListener中有什么?说它只是显示一个弹出窗口并不能帮助我帮助你。另外,这个“Hackbook”是什么?它是一项活动吗?

  • 对于 SDK v3,`Facebook.dialog()` 已弃用,并替换为 [`WebDialog`](https://developers.facebook.com/docs/reference/android/3.0/WebDialog) (3认同)