Как преобразовать ByteArrayOutputStream в URI - PullRequest
0 голосов
/ 07 мая 2019

Я разрабатываю чат с услугой 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.Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...