Открыть PDF-файл с помощью intent программно в Android

#android

#Android

Вопрос:

У меня есть приложение для Android, в котором мне нужно открыть свой PDF-файл по url. Для этого я использовал следующий код для вызова вспомогательных приложений для открытия моего PDF-файла, но, несмотря на наличие более 5 таких приложений, в списке указаны только два приложения, например, Adobe Reader и Goodgle Drive.

 intent.setDataAndType(Uri.parse(url), "application/pdf");
startActivity(intent);```

But, I'm in need to open pdf using other compatible apps already installed. Please help resolve the ibid issue.
Thanks 
 

Ответ №1:

используйте это

 private fun ViewFile(pdfFile: File) {
 Log.e("!!pdfFile",pdfFile.absolutePath)

 val path: Uri
 val pdfIntent = Intent(Intent.ACTION_VIEW)
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
 try {
 val m: Method = StrictMode::class.java.getMethod("disableDeathOnFileUriExposure")
 m.invoke(null)
 } catch (e: Exception) {
 e.printStackTrace()
 }
 path = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID.toString()   ".provider", pdfFile)

 // path = Uri.parse(pdfFile.getAbsolutePath());

 // pdfIntent.setDataAndType(path, "application/pdf");
 pdfIntent.setDataAndType(path, "application/pdf")
 pdfIntent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
 pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
 } else {
 path = Uri.fromFile(pdfFile)
 pdfIntent.setDataAndType(path, "application/pdf")
 }


 /* Uri path = FileProvider.getUriForFile(getActivity(),
 BuildConfig.APPLICATION_ID   ".provider",
 pdfFile);*/try {
 startActivity(pdfIntent)
 } catch (e: ActivityNotFoundException) {
 Toast.makeText(this, getString(R.string.lblnoapplicationfound), Toast.LENGTH_SHORT).show()
 }
}
 

Ответ №2:

попробуйте этот простой способ открыть pdf с URL

 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
 startActivity(browserIntent);
 

Комментарии:

1. Но без указания типа файла просто откроется pdf с помощью приложения по умолчанию. Это не позволило бы нам выбрать или изменить приложение. В моем случае PDF-файл был открыт в Adobe acrobat без вмешательства пользователя.