В моем onCreate () я делаю эту проверку:
//
// check if we have a PDF viewer, else bad things happen
//
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setType("application/pdf");
List<ResolveInfo> intents = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (intents == null || intents.size() == 0) {
// display message then...
finish();
}
В моем HTC Desire это не возвращает совпадения, даже если у меня есть программа просмотра PDF от Adobe. Ответ на этот вопрос android: откройте pdf из моего приложения с помощью встроенного средства просмотра pdf упоминает, что Adobe может не иметь общедоступных Intents, поэтому приведенная выше проверка, очевидно, ничего не даст.
Может ли кто-нибудь проверить, можете ли вы запускать Acrobat из намерения или есть какой-то другой метод или средство просмотра PDF для использования.
Фактический вариант использования - загрузка копий счетов и их хранение в локальном хранилище с использованием кода, такого как:
URL url = new URL(data);
InputStream myInput = url.openConnection().getInputStream();
FileOutputStream fos = openFileOutput(fname, Context.MODE_WORLD_READABLE);
// transfer bytes from the input file to the output file
byte[] buffer = new byte[8192];
int length;
while ((length = myInput.read(buffer)) > 0) {
fos.write(buffer, 0, length);
progressDialog.setProgress(i++);
}
fos.close();
, а затем показать
// read from disk, and call intent
openFileInput(fname); // will throw FileNotFoundException
File dir = getFilesDir(); // where files are stored
File file = new File(dir, fname); // new file with our name
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
intent.setType("application/pdf");
startActivity(intent);