Открытие PDF извне с помощью Polaris office 5 возвращает «Этот документ не открывается»

Мы пытались решить эту проблему в течение последних нескольких часов, наконец решили, что мы должны вернуться к StackOverflow.

Здесь – У нас есть приложение, которое загружает PDF-файл с сервера в каталог кэша приложения, а затем открывает его с помощью диспетчера пакетов. Конечно, через grantUriPermission() предоставляется разрешение на чтение (и запись) всех доступных пакетов.

Несмотря на то, что он отлично работает на большинстве устройств, сегодня мы столкнулись с устройством, в котором POLARIS Office 5 установлен как средство просмотра PDF по умолчанию.

Всякий раз, когда мы открываем файл, Polaris просто выводит сообщение «Этот документ не может быть открыт».

Я должен сказать, что при попытке открыть файл через Acrobat Reader он отлично работает. Кроме того, когда мы скопировали файл из каталога кэша во внешний каталог (используя Android-менеджер Android), а затем открыли его в Polaris вручную, он отлично работал.

Мы бы отказались от этого, но поскольку Polaris является наблюдателем по умолчанию на многих устройствах, нам очень хотелось бы решить эту проблему.

Вот код –

  public void onDownloadDone(String filepath) { // Set a file object that represents the downloaded file File file = new File(filepath); // Set an intent for the external app Intent intent = new Intent(Intent.ACTION_VIEW); // Get mime type of the downloaded file String fileExtension = MimeTypeMap.getFileExtensionFromUrl(filepath); String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension); intent.setType(mimeType); // Look for installed packges according to the file's mime type PackageManager pm = context.getPackageManager(); Uri contentUri = FileProvider.getUriForFile(context, "myapp.fileprovider", file); // Set the file uri in the intent intent.setData(contentUri); // Give permissions to the file to each external app that can open the file List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); for (ResolveInfo externalApp: activities){ String packageName = externalApp.activityInfo.packageName; context.grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); } // Start the activities (or launch the menu) if any activity exists if (activities.size() > 0){ context.startActivity(intent); } else { System.out.println("Warning!!! No app for file " + filepath); } } 

Спасибо большое!

У меня была такая же проблема. Файлы PDF будут открываться с помощью ezPDF и Adobe, но не с помощью программы Polaris Viewer . Вы должны установить данные и тип с помощью:

 intent.setDataAndType(uri, "application/pdf"); 

Вместо того, чтобы использовать:

 intent.setType("application/pdf"); intent.setData(uri); 

Для меня теперь отлично работает с Polaris :

 Uri uri = FileProvider.getUriForFile(MyApplication.getContext(), MyApplication.getContext().getPackageName() + ".myfileprovider", destFile); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, "application/pdf"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(intent);