Is Google Doc viewer can't work on localhost?

1.6k Views Asked by At

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.?

Error

1

There are 1 best solutions below

1
MUHAMMAD ZEESHAN MUHAMMAD YAQO On BEST ANSWER

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>