Я разрабатываю чат с услугой Twilio
, этот чат должен предоставлять возможность пользователю загружать изображения и документы PDF.Моя проблема в том, что метод загрузки документа из Twilio
возвращает его как ByteArrayOutputStream
, и мне нужно преобразовать его в URI
, чтобы использовать его в следующем коде, который позволяет пользователю открывать его.
private void openDocument(String name, Uri path) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
if (name.contains(".pdf")) {
intent.setDataAndType(path, "application/pdf");
} else if (name.contains(".txt")) {
intent.setDataAndType(path, "text/plain");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(context, context.getString(R.string.not_found_application_to_open_file), Toast.LENGTH_LONG).show();
}
}
Попробуйте использовать этот код, но он не работает.
private void uploadPdfFile(Message.Media media, Message message) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
media.download(outputStream, new StatusListener() {
@Override
public void onSuccess() {
Log.d(TAG, "Media message downloaded");
byte[] bitmapData = outputStream.toByteArray();
String s = new String(buf, "UTF-8");
URI uri = URI.parse(s);
openDocument(media.getFileName(), uri);
}
@Override
public void onError(ErrorInfo errorInfo) {
Log.e(TAG, "Error downloading media message");
Toast.makeText(ChatActivity.this, getString(R.string.error_uploading_image), Toast.LENGTH_LONG).show();
}
}, new ProgressListener() {
@Override
public void onStarted() {
showProgressDialog("Cargando documento...");
}
@Override
public void onProgress(long l) { }
@Override
public void onCompleted(String s) {
dismissProgressDialog();
}
});
}
Как еще можно преобразовать ByteArrayOutputStream
в URI
.Спасибо за помощь.