发送私人消息给我的朋友(S)使用我的Android应用程序

我正在开发一个用户可以与他/她的Facebook朋友分享消息的应用程序。 我正在使用Android的Facebook API。 我可以validation用户,以及我可以得到我的朋友列表作为一个Facebook用户,也张贴在墙上的消息,但我正在寻找发送私人消息给我的朋友,我没有得到任何解决scheme,所以任何身体可以帮助我,我怎么能实现…

提前致谢

最好的祝福

Solutions Collecting From Web of "发送私人消息给我的朋友(S)使用我的Android应用程序"

使用graphicsAPI来代表用户发送私人消息是不可能的。

你应该能够使用发送对话框 ,虽然我还没有尝试过在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() {} }); 

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


编辑

由于这个对话框在android中还不被支持,你有3个选项:

  1. 等待Facebook来实现android的对话框。
  2. 尝试在移动设备中的浏览器中打开该对话框(该文件的URL位于文档中)。
  3. 请求xmpp_login并添加一个xmpp客户端(即: asmack ),并且可以实现您自己的“发送消息”对话框。

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

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

在这里输入图像说明

您可以使用以下MIMEtypes发送附件:

在这里输入图像说明

示例代码发送图像如下所示

 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上

使用下面的代码可以发送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; }