private boolean parseAttachmentsArray(String messageString) throws JSONException { JSONObject root = new JSONObject(messageString); if (!root.isNull(KEY_ATTACHMENTS)) { JSONArray items = root.getJSONArray(KEY_ATTACHMENTS); remoteAttachmentStoredFiles = new ArrayList<StoredFile>(); for (int i = 0; i < items.length(); i++) { String json = items.getJSONObject(i).toString(); JSONObject attachment = new JSONObject(json); String mimeType = attachment.optString("content_type"); StoredFile storedFile = new StoredFile(); storedFile.setId(getNonce()); storedFile.setApptentiveUri(attachment.optString("url")); storedFile.setSourceUriOrPath(attachment.optString("thumbnail_url")); storedFile.setLocalFilePath(attachment.optString("")); storedFile.setMimeType(mimeType); storedFile.setCreationTime(0); remoteAttachmentStoredFiles.add(storedFile); } if (remoteAttachmentStoredFiles.size() > 0) { setTextOnly(false); return true; } } return false; }
public void deleteAssociatedFiles() { try { Future<List<StoredFile>> future = ApptentiveInternal.getInstance().getApptentiveTaskManager().getAssociatedFiles(getNonce()); List<StoredFile> associatedFiles = future.get(); // Delete local cached files if (associatedFiles == null || associatedFiles.size() == 0) { return; } for (StoredFile file : associatedFiles) { File localFile = new File(file.getLocalFilePath()); localFile.delete(); } // Delete records from db ApptentiveInternal.getInstance().getApptentiveTaskManager().deleteAssociatedFiles(getNonce()); } catch (Exception e) { ApptentiveLog.e(MESSAGES, "Unable to delete associated files in worker thread"); logException(e); } }
public List<StoredFile> getAssociatedFiles() { if (hasNoAttachments) { return null; } List<StoredFile> associatedFiles = null; try { Future<List<StoredFile>> future = ApptentiveInternal.getInstance().getApptentiveTaskManager().getAssociatedFiles(getNonce()); associatedFiles = future.get(); } catch (Exception e) { ApptentiveLog.e(MESSAGES, "Unable to get associated files in worker thread"); logException(e); } finally { return associatedFiles; } }
@Override protected boolean execute(Conversation conversation) { if (is == null) { return false; // TODO: add error message } CompoundMessage message = new CompoundMessage(); // No body, just attachment message.setBody(null); message.setRead(true); message.setHidden(true); message.setSenderId(conversation.getPerson().getId()); ArrayList<StoredFile> attachmentStoredFiles = new ArrayList<StoredFile>(); String localFilePath = Util.generateCacheFilePathFromNonceOrPrefix(ApptentiveInternal.getInstance().getApplicationContext(), message.getNonce(), null); String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); if (!TextUtils.isEmpty(extension)) { localFilePath += "." + extension; } // When created from InputStream, there is no source file uri or path, thus just use the cache file path StoredFile storedFile = Util.createLocalStoredFile(is, localFilePath, localFilePath, mimeType); if (storedFile == null) { return false; // TODO: add error message } storedFile.setId(message.getNonce()); attachmentStoredFiles.add(storedFile); message.setAssociatedFiles(attachmentStoredFiles); conversation.getMessageManager().sendMessage(message); return true; } }, "add unread message listener");
for (ImageItem image : attachedImages) { StoredFile storedFile = new StoredFile(); storedFile.setId(getNonce()); storedFile.setApptentiveUri(""); storedFile.setSourceUriOrPath(image.originalPath);