Android VIEW намерен с контентом Uri - PullRequest
0 голосов
/ 28 марта 2019

Я создаю приложение, которое должно сохранять справочные документы, сохраненные на устройстве. Я получаю URI содержимого для этих документов следующим образом:

private void selectDocument() {
    Intent chooseFile;
    chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
    chooseFile.addCategory(Intent.CATEGORY_OPENABLE);
    chooseFile.setType("*/*");
    if (chooseFile.resolveActivity(getPackageManager()) != null)
        startActivityForResult(chooseFile, ACTIVITY_CHOOSE_FILE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (resultCode != RESULT_OK) return;
    if (requestCode == ACTIVITY_CHOOSE_FILE) {

        try {
            binding.txtLink.setText(URLDecoder.decode(data.getDataString(),"UTF-8"));
            binding.btnLink.setTag(false);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

после отображения URL-адреса для пользователя, он должен иметь возможность открыть документ.

И я не совсем уверен, как это сделать, так как я получаю только contentURI. Что я сейчас пытаюсь это:

    private void openDocument() {
    String file = binding.txtLink.getText().toString();
    if (file.isEmpty()) {
        return;
    }
    Intent intent;

    String extension = file.substring(file.lastIndexOf(".") + 1);
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(file));

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        Snackbar.make(binding.root, "Keine Anwendung zum öffnen der Datei installiert", Snackbar.LENGTH_LONG).show();
    }

}

Это уже открывает правильное приложение, но они не могут найти файлы.

Что мне нужно сделать, чтобы включить это поведение? Или мне нужно скопировать файлы в каталог моего приложения и открыть их оттуда?

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