我想在Android studio的帮助下在Android应用程序中打开一个文档文件。怎么可能?我应该使用网络视图吗?我曾尝试过许多网站的源代码,但文件是由其他应用程序打开的
答案 0 :(得分:1)
您可以使用意图打开pdf文件。
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
如果您不喜欢此方法,并且想在应用程序中打开pdf文件,则可以使用自定义 PDF查看器。
在 gradle文件 编译中:'com.github.barteksc:android-pdf-viewer:2.0.3'
同步项目后,转到xml文件并添加 PDF查看器。
<com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
现在,您将导入 .java 文件:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.github.barteksc.pdfviewer.PDFView;
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.util.List;
您将实施两种方法:OnPageChangeListener
和OnLoadCompleteListener
主要代码:
public static final String SAMPLE_FILE = "android_tutorial.pdf"; //your file path
PDFView pdfView;
Integer pageNumber = 0;
String pdfFileName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfView= (PDFView)findViewById(R.id.pdfView);
displayFromAsset(SAMPLE_FILE);
}
private void displayFromAsset(String assetFileName) {
pdfFileName = assetFileName;
pdfView.fromAsset(SAMPLE_FILE)
.defaultPage(pageNumber)
.enableSwipe(true)
.swipeHorizontal(false)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
}
@Override
public void loadComplete(int nbPages) {
PdfDocument.Meta meta = pdfView.getDocumentMeta();
printBookmarksTree(pdfView.getTableOfContents(), "-");
}
public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
for (PdfDocument.Bookmark b : tree) {
if (b.hasChildren()) {
printBookmarksTree(b.getChildren(), sep + "-");
}
}
}
多数民众赞成!
P.S:首先搜索谷歌,如果你找不到什么,写信给你 问题!