我已经做了一个使用quickblox将图片发送到私人聊天室的演示,我正在努力将图片附加到聊天消息中,我已经浏览了它的文档并使用了下面的链接,但没有成功
Attach an image
我的代码如下:

chatMessage = new QBChatMessage();

sendButton = (Button) findViewById(R.id.chatSendButton);
sendButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        final String messageText = messageEditText.getText().toString();
        if (TextUtils.isEmpty(messageText)) {
            return;
        }

        // Send chat message
        //

        // send a message
        // ...
        int fileId = R.raw.ic_launcher;
        InputStream is = ChatActivity.this.getResources()
                        .openRawResource(fileId);
        File file = FileHelper.getFileInputStream(is,
                        "sample_file.png", "myFile");

        Boolean fileIsPublic = true;

        QBContent.uploadFileTask(file, fileIsPublic, messageText,
                        new QBEntityCallbackImpl<QBFile>() {
                    @Override
                    public void onSuccess(QBFile qbFile, Bundle params) {

                        String publicUrl = qbFile.getPublicUrl();
                        System.out
                                        .println("==========image uploaded success++++++++"
                                                + publicUrl);

                         id = qbFile.getId();

                        System.out
                                        .println("===================image id+++++++++++"
                                                + id + "");

                    }

                    @Override
                    public void onError(List<String> errors) {
                        System.out
                                        .println("==========image uploaded Errors++++++++"
                                                + errors.toString());

                    }
                }, new QBProgressCallback() {
                    @Override
                    public void onProgressUpdate(int progress) {

                    }
                });
        QBAttachment atach = new QBAttachment("image");
                atach.setId(id+"");


        ArrayList<QBAttachment> aryatch = new ArrayList<QBAttachment>();
        aryatch.add(atach);
        chatMessage.setAttachments(aryatch);
        chatMessage.setBody(messageText);
        chatMessage.setProperty(PROPERTY_SAVE_TO_HISTORY, "1");
        chatMessage.setDateSent(new Date().getTime() / 1000);

        try {
            chat.sendMessage(chatMessage);
        } catch (XMPPException e) {
            Log.e(TAG, "failed to send a message", e);
        } catch (SmackException sme) {
            Log.e(TAG, "failed to send a message", sme);
        }

        messageEditText.setText("");

        if (dialog.getType() == QBDialogType.PRIVATE) {
            showMessage(chatMessage);
        }

    }

});

最佳答案

很清楚错误在哪里
你的身份证在这里是空的

atach.setId(id+"");

因为它会的!=nil仅在uploadfiletask的onsuccess块中
所以正确的方法是转发uploadfiletask的onsuccess块中的所有附件逻辑
因为这些quickblox请求是异步的

关于android - 图像未在Android的quickblox中附加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30643235/

10-10 09:43