I'm new at android. Im trying to open pdf file in Google doc viewer in android app through url from localhost. But google viewer show " No Preview Available " while url working fine on browser. Is google viewer can't work on localhost url or there is an error.?
Google Doc viewer works with the sites that are available online. Instead Use this method:
Import Libraries:
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
implementation 'com.github.kk121:File-Loader:1.2'
implementation 'com.karumi:dexter:5.0.0'
and
allprojects {
repositories {
maven {url "https://jitpack.io"}
}
In main.xml:
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdf_viewer"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
onCreate:
Dexter.withActivity(this)
.withPermissions(Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(new BaseMultiplePermissionsListener(){
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
super.onPermissionsChecked(report);
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
super.onPermissionRationaleShouldBeShown(permissions, token);
}
}).check();
pdfView = (PDFView) findViewById(R.id.pdf_viewer);
FileLoader.with(this)
.load(url)
.fromDirectory("PDFFiles",FileLoader.DIR_EXTERNAL_PUBLIC)
.asFile(new FileRequestListener<File>() {
@Override
public void onLoad(FileLoadRequest request, FileResponse<File> response) {
File pdfFile = response.getBody();
pdfView.fromFile(pdfFile)
.password(null).defaultPage(0).enableSwipe(true).swipeHorizontal(false)
.enableDoubletap(true).onDraw(new OnDrawListener() {
@Override
public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
//code if require
}
})
.onDrawAll(new OnDrawListener() {
@Override
public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
//code if require
}
})
.onPageError(new OnPageErrorListener() {
@Override
public void onPageError(int page, Throwable t) {
Toast.makeText(getApplicationContext(),"Error Occur ",Toast.LENGTH_LONG).show();
}
})
.onPageChange(new OnPageChangeListener() {
@Override
public void onPageChanged(int page, int pageCount) {
//code if require
}
})
.onTap(new OnTapListener() {
@Override
public boolean onTap(MotionEvent e) {
return true;
}
})
.onRender(new OnRenderListener() {
@Override
public void onInitiallyRendered(int nbPages, float pageWidth, float pageHeight) {
pdfView.fitToWidth();
}
})
.enableAnnotationRendering(true)
.invalidPageColor(Color.WHITE)
.load();
}
@Override
public void onError(FileLoadRequest request, Throwable t) {
Toast.makeText(getApplicationContext(),""+t.getMessage(),Toast.LENGTH_LONG).show();
}
});
In AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:usesCleartextTraffic="true"> </application>