【问题标题】:Android facebook send a message安卓 facebook 发送消息
【发布时间】:2016-09-07 00:32:29
【问题描述】:

我必须通过 android 应用程序向 facebook 朋友发送消息。我已完成所有功能并尝试了向 facebook 朋友发送消息的代码。但它显示对话框不可用的错误设备。

这是我向 facebook 朋友发送消息的代码:

Facebook facebook = new Facebook(APP_ID);
        Bundle params = new Bundle();
        params.putString("to", Constant.facebookIdBuffer.toString());
        params.putString("name", "Goal Machine");//title
        params.putString("link", Constant.shortAppUrlForAndroid+"\n"+Constant.shortAppUrlForIphone);//message
        facebook.dialog(_activity, "send", params, new DialogListener() {//apprequests
            @Override
            public void onComplete(Bundle values) {
                Constant.facebookIdBuffer=null;
                //postToWall("@"+Constant.facebookIdBuffer.toString()+sendInvite);
            }

            @Override
            public void onFacebookError(FacebookError error) {
                Constant.showAlertDialog("Error", "Can't send ally request!", _activity.getParent(), false);
                Constant.facebookIdBuffer=null;
            }

            @Override
            public void onError(DialogError e) {
                Constant.showAlertDialog("Error", "Can't send ally request!", _activity.getParent(), false);
                Constant.facebookIdBuffer=null;
            }

这是屏幕短显示错误:

请给我建议一种发送带有 Facebook 好友链接的消息的方法。

【问题讨论】:

    标签: android facebook


    【解决方案1】:

    Send dialog 在 android 中尚不支持,因此您有 3 个选项:

    • 等待 facebook 为 android 实现对话框。
    • 尝试在移动设备的浏览器中打开对话框(该对话框的 URL 位于 docs 中)。
    • 请求xmpp_login 权限并添加一个xmpp 客户端(即:asmack),然后您可以实现自己的“发送消息”对话框。

    【讨论】:

    【解决方案2】:

    如果您想向朋友发送消息,请不要使用 WebDialog。 下面是我使用并且工作正常的代码。

    private void sendRequestDialog(String msg, String json) {
            Bundle params = new Bundle();
            params.putString("message", msg);
            params.putString("data", json);
            WebDialog requestsDialog = (new WebDialog.RequestsDialogBuilder(
                    context, session, params)).setOnCompleteListener(
                    new OnCompleteListener() {
    
                        @Override
                        public void onComplete(Bundle values,
                                FacebookException error) {
    
                            if (error != null) {
                                if (error instanceof FacebookOperationCanceledException) {
                                    Toast.makeText(context, "Request cancelled",
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(context, "Network Error",
                                            Toast.LENGTH_SHORT).show();
                                }
                            } else {
                                final String requestId = values
                                        .getString("request");
                                if (requestId != null) {
                                    Toast.makeText(context, "Request sent",
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(context, "Request cancelled",
                                            Toast.LENGTH_SHORT).show();
                                }
                            }
                        }
    
                    }).build();
            requestsDialog.show();
        }
    

    这是发送给朋友的消息格式

    {
      "id": "493703870648580", 
      "application": {
        "name": "Send Requests How To", 
        "id": "403223126407920"
      }, 
      "to": {
        "name": "Chris Abe Colm", 
        "id": "100003086810435"
      }, 
      "from": {
        "name": "Christine Abernathy", 
        "id": "1424840234"
      }, 
      "data": "{\"badge_of_awesomeness\":\"1\",\"social_karma\":\"5\"}", 
      "message": "Learn how to make your Android apps social", 
      "created_time": "2012-10-07T17:29:57+0000"
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用最新 facebook Android sdk 中的 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-31
        • 2014-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多