PDF anzeigen in Android
In meiner onCreate() ich mache diese Prüfung:
//
//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();
}
Auf meinem HTC Desire, das nicht wieder ein match, obwohl ich den Adobe-PDF-viewer. Eine Antwort auf diese Frage android: öffnen Sie eine pdf-Datei von meiner app mit dem eingebauten pdf-viewer erwähnt, dass Adobe keine öffentliche Absichten, so dass die obige Prüfung wird natürlich nichts zurück.
Kann jemand überprüfen, ob Sie sollten in der Lage sein, starten Sie Acrobat von einer Absicht, oder gibt es eine andere Methode oder PDF-viewer zu verwenden.
Die tatsächliche Benutzung Fall ist das herunterladen von Kopien der Rechnungen und Ablage auf einem lokalen Speichermedium mit einem code wie:
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();
und dann zu zeigen,
//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);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verbinden Sie Ihr Telefon mit Ihrem PC, starten Sie Eclipse und öffnen Sie die LogCat. Dann laden Sie eine PDF-Datei mit dem browser und öffnen Sie es. Sie sollten eine Zeile sehen, wie (ich habe das HTC desire):
09-14 17:45:58.152: INFO/ActivityManager(79): Start Aktivität: Intent { act=android.Absicht.Aktion.VIEW dat=file:///sdcard/download/DATEINAME.pdf-typ=application/pdf flg=0x4000000 cmp=com.htc.pdfreader/.ActPDFReader }
Haben einen gehen mit einem expliziten intent mit der Komponente Informationen. Docs hier sagen:
Nachteil ist Sie wird an dem htc reader. Aber Sie könnten versuchen, eine implizite Absicht zuerst, und wenn das fehlschlägt, versuchen Sie die eindeutige Absicht als fallback.
-Kopieren Sie den folgenden code in Ihre Tätigkeit. Rufen Sie die Funktion CopyReadAssets("File_name.pdf") von onCreate () - Funktion. Ort der Dateiname.pdf-Datei im Ordner "assets".