سلام
در ویجت WebView به صورت پیش فرض قابلیت بارگذاری و نمایش اسناد PDF رو از روی حافظه داخلی دستگاه های اندوریدی وجود نداره.
برای نمایش یک فایل PDF در برنامه های اندرویدی می بایست یکی از سه کار زیر رو انجام بدی:
- از یک کتابخانه شخص ثالث استفاده کنی
- با استفاده از کلاس Intent از یه برنامه نمایش اسناد PDF داخلی خود دستگاه های اندرویدی استفاده کنی
- از GoogleDoc در یک مرورگر وب استفاده کنی
مثالی از روش سوم
String myPdfUrl = "http://example.com/awesome.pdf";
String url = "http://docs.google.com/gview?embedded=true&url=" + myPdfUrl;
Log.i(TAG, "Opening PDF: " + url);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
این روش به هیچ وجه توصیه نمیشه چرا که این روش یک ایده بسیار مزخرف از لحاظ تجربه کاربریه و سرعت لود اسناد بسیار آهسته و بدون پاسخه.
مثالی از روش دوم
File appFolder = new File(Environment.getExternalStorageDirectory(), context.getBaseContext().getPackageName());
File file = new File(appFolder, fileName);
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
بهترین و مطمئن ترین روش، روش دوم هستش. چرا که امروزه در تمامی گوشی های اندرویدی بصورت پیش فرض برنامه مخصوص نمایش اسناد PDF نصب هست.
اما اگه به هر دلیلی مایلی که اسناد PDF رو در برنامه خودت باز و به نمایش دربیاری می تونی از روش اول استفاده کنی.
برای این کار هم رو راه وجود داره:
- راه اول اینه که اگه تو برنامه ات از API 21 به بالا استفاده می کنی می تونی از کلاس PDFRendered استفاده کنی. «فقط دقت داشته باش در صورتی که از این کلاس استفاده کنی برنامه ات در ورژن اندروید 5 به پایین کار نمی کنه»
- راه دوم اینه که می تونی از یک ویجت مخصوص نمایش اسناد PDF استفاده کنی که آدرس سایتش رو توی لینک زیر گذاشتم. می تونی نحوه دانلود و استفاده از اون رو مطالعه کنی.
android-pdfview