15

我正在开发一个应用程序,用户可以在其中与他/她的 Facebook 朋友分享消息。我正在使用适用于 Android 的 Facebook API。

我可以对用户进行身份验证,也可以将我的朋友列表作为 Facebook 用户并在墙上发布消息,但我正在寻找向我的朋友发送私人消息,但我没有得到任何解决方案,所以任何人都可以帮助我,我怎样才能做到这一点?

4

4 回答 4

7

无法使用图形 API 代表用户发送私人消息。

但是,您应该能够使用Send Dialog,尽管我还没有在 android 上尝试过,但它应该类似于:

Bundle params = new Bundle();
params.putString("to", "USER_ID");
params.putString("name", "TITLE HERE");
params.putString("link", "A URL"); // this link param is required

facebook.dialog(context, "send", 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() {}
});

您可以使用的另一种方法是Chat API,您可以使用该 API 代表用户发送消息,它需要xmpp_login权限并且您需要实现 xmpp 客户端。


编辑

由于 android 尚不支持此对话框,因此您有 3 个选项:

  1. 等待 facebook 为 android 实现对话框。
  2. 尝试在移动设备的浏览器中打开对话框(其网址在文档中)。
  3. 要求xmpp_login并添加一个 xmpp 客户端(即:asmack),然后您可以实现自己的“发送消息”对话框。
于 2012-05-26T10:58:10.283 回答
0

最新的 Android SDK 功能现在是(私有)消息对话框
https://developers.facebook.com/docs/android/message-dialog/

于 2014-05-02T07:45:30.130 回答
0

可以使用以下代码发送 facebook 私人消息。

if (isPackageExisted("com.facebook.orca")) {
        Uri uri = Uri.parse("fb-messenger://user/");
        uri = ContentUris.withAppendedId(uri, Long.parseLong("Enter user id here"));
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    } else {
        Toast.makeText(this, "Please install facebook messenger", Toast.LENGTH_LONG).show();
    }
}

检查 Facebook Messenger 是否安装

 public boolean isPackageExisted(String targetPackage) {
    PackageManager pm = getPackageManager();
    try {
        PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
    return true;
}
于 2017-02-27T06:16:15.430 回答
0

您可以使用 MessengerUtils 发送带有附件的消息。

在此处输入图像描述

您可以使用以下 MIME 类型发送附件:

在此处输入图像描述

发送图像的示例代码如下

String mimeType = "image/jpeg";

// contentUri points to the content being shared to Messenger
ShareToMessengerParams shareToMessengerParams =
        ShareToMessengerParams.newBuilder(contentUri, mimeType)
                .build();

// Sharing from an Activity
MessengerUtils.shareToMessenger(
       this,
       REQUEST_CODE_SHARE_TO_MESSENGER,
       shareToMessengerParams);

在此处输入图像描述

更多文档在https://developers.facebook.com/docs/messenger/android

于 2016-09-06T16:28:18.327 回答