2015-08-26 2 views
2

Я использую следующие коды для выбора файла PDF с помощью Intent. Он отлично работает на Android 5.0 и выше, но не подходит приложение, чтобы открыть сообщение PDF файл на API 18.Android выберите PDF, используя Intent on API 18

public static Intent pickPdf() { 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("application/pdf"); 
    intent.addCategory(Intent.CATEGORY_DEFAULT); 
    return intent; 
} 

startActivityForResult(Intent.createChooser(pickPdf(), "Open with"), PICK_PDF); 
+2

Там нет ничего, встроенный в Android, который обязательно обрабатывает, что 'действие Intent' для этого типа MIME. – CommonsWare

+0

@CommonsWare Если вы хотите выбрать PDF-файл, используя «Intent» из хранилища, как бы вы это сделали? – Alireza

+0

Откажитесь от отображения собственного пользовательского интерфейса (используйте «MediaStore», чтобы найти все файлы «application/pdf», показать в «ListView» или «RecyclerView»). – CommonsWare

ответ

1

не появляется, как предложил @CommonsWare - нет никакой гарантии, что установлено приложение, который обрабатывает PDF-файлы.

Как я решил эту проблему до того, как с помощью App Chooser, например, так:

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename); 
Intent target = new Intent(Intent.ACTION_VIEW); 
target.setDataAndType(Uri.fromFile(file),"application/pdf"); 
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

Intent intent = Intent.createChooser(target, "Open File"); 
try { 
    startActivity(intent); 
} catch (ActivityNotFoundException e) { 
    // Instruct the user to install a PDF reader here, or something 
    ShowToast(TAG, "Unable to open PDF. Please, install a PDF reader app."); 
} 
+1

Я не хочу открывать конкретный файл PDF, мне просто нужно выбрать его из хранилища и получить его URI на 'onActivityResult'методе. – Alireza