Android pdf viewer在android studio应用问题说明详解

时间:2021-05-21

之前一直是做.NET开发的,最近需要弄一个新闻app,能力有限,只能借助HTML5 WebAPP+android studio来完成这项工作。
android studio主要用WebView来加载发布好的WebApp,打包生产APP。

其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们。

android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示。

android-pdf-viewer插件可以直接到github上下载,地址:https://github.com/barteksc/AndroidPdfViewer
或者直接到发布好的页面下载:https://github.com/barteksc/AndroidPdfViewer/releases
我下载的是:AndroidPdfViewer-2.1.0版本zip包

将下载AndroidPdfViewer-2.1.0包解压出来,再你的app项目中,打开 File -> New -> Import Module 选择到刚才解压的文件夹

本人目录是:D:\AndroidStudioProjects\AndroidPdfViewer-2.1.0\android-pdf-viewer

完成后,回提示先ERROR:

Error:Plugin with id ‘com.github.dcendents.android-maven' not found.

解决方法:

点击你的工程Gradle Scripts目录下的bulid.gradle (Project:你的工程名)

buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:2.0.0' } }

中dependencies的下添加 classpath ‘com.github.dcendents:android-maven-gradle-plugin:1.3',

Mark Modules之后,出现新的ERROR:

Error:Plugin with id ‘com.jfrog.bintray' not found.

此时同样在dependencies下添加:classpath “com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0”

再次Mark Modules就不会报错了。

先就可以开始使用 android-pdf-viewer 插件了,

别忘记引用权限问题哦

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/><uses-permission android:name="android.permission.INSTALL_PACKAGES" />

先代码为项目中report activity.java,实现了接收另外一个activity跳转过来同时传递参数pdf地址,然后通过DownloadManager下载完成之后,显示pdf。

package cn.cgrs.myphone;import android.app.DownloadManager;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.SharedPreferences;import android.database.Cursor;import android.net.Uri;import android.os.Environment;import android.preference.PreferenceManager;import android.provider.OpenableColumns;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.webkit.MimeTypeMap;import android.webkit.WebSettings;import android.webkit.WebView;import android.widget.TextView;import android.widget.Toast;import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;import com.shockwave.pdfium.PdfDocument;import java.io.File;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.List;public class Report extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener {private com.github.barteksc.pdfviewer.PDFView pdfView ;private TextView textView;private DownloadManager downloadManager;private SharedPreferences prefs;private static String DL_ID = "downloadId";Integer pageNumber = 0;String pdfFileName = "yyy.pdf";Uri uri;String AUrl;private Boolean isDown = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_report);Intent intent = getIntent(); // 获取 IntentAUrl = intent.getStringExtra("url"); // 获取 String 值Log.e("接收url:",AUrl);//AUrl = "http://plete(int nbPages) {PdfDocument.Meta meta = pdfView.getDocumentMeta();printBookmarksTree(pdfView.getTableOfContents(), "-");}public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {for (PdfDocument.Bookmark b : tree) {// Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));if (b.hasChildren()) {printBookmarksTree(b.getChildren(), sep + "-");}}}}

以上所述是小编给大家介绍的Android pdf viewer在android studio应用问题说明详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章