Search code examples
androidphpmyadmingoogle-document-viewer

Is Google Doc viewer can't work on localhost?


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


Solution

  • 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>