Как открыть PDF-файл непосредственно с URL-адреса в app chooser

#android #pdf #android-intent

#Android #PDF #android-намерение

Вопрос:

Мне нужно открыть PDF-файл, который я получаю с URL-адреса из JSON.

Этот URL-адрес не содержит расширения файла в конце URL-адреса. Я пробовал что-то вроде этого:

         final String pdfUrl = dataUrl.replace("data", "file")   "/x?filefield="   tf.getFieldName()   "amp;context=""   dataItemIdModOne   ""amp;skipcache=1";
        SharedPreferences sharedPrefs = getActivity().getSharedPreferences(Constants.userDetails, MODE_PRIVATE);
        String username = sharedPrefs.getString(Constants.user, "");
        String password = sharedPrefs.getString(Constants.pass, "");
        String userPassword = username   ":"   password;
        final String basicAuth = "Basic "   new String(new Base64().encode(userPassword.getBytes()));
        final Map<String, String> extraHeaders = new HashMap<>();
        extraHeaders.put("Authorization", basicAuth);
        pdfIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Uri uri = Uri.parse(pdfUrl);
                Intent target = new Intent(Intent.ACTION_VIEW);
                target.setDataAndType(uri,"*/*");
                Bundle bundle = new Bundle();
                bundle.putString("Authorization", basicAuth);
                target.putExtra(Browser.EXTRA_HEADERS, bundle);

                Intent intent = Intent.createChooser(target, "Open File");
                try {
                    startActivity(intent);
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(getActivity(), "Please install PDF app", Toast.LENGTH_SHORT).show();
                }
            }
        });
  

Мне просто нужно представить пользователю app chooser, чтобы он / она выбрал witch app для открытия файла или, в лучшем случае, просто напрямую открыть доступный PDF Reader на своем устройстве.

С помощью этой реализации я получаю app chooser, и когда я пытаюсь открыть файл, он загружается, но в конце говорится, что его нельзя открыть.

Итак, упражнение с этим URL-адресом заключается в том, что при вызове URL-адреса он перенаправляет на другой URL-адрес, который содержит сам PDF-файл. Но я не вижу этот второй URL. Также, когда я вставляю URL-адрес в браузере, он запрашивает имя пользователя и пароль (вот почему мне нужна базовая аутентификация).

Заранее спасибо.

Ответ №1:

Немногие, если таковые имеются, программы просмотра PDF будут поддерживать http / https для своих ACTION_VIEW действий. Практически ни один из них не будет поддерживать случайные Intent дополнения, такие как EXTRA_HEADERS .

Загрузите PDF самостоятельно, используя свой любимый HTTP client API (например, HttpUrlConnection , OkHttp). Затем используйте ACTION_VIEW для просмотра загруженного PDF-файла.