在android中使用barteksc / AndroidPdfViewer库时,从设备的内部存储中获取的PDF不可见

问题描述

我可以保证我的手机中有一个名为 "adobe.pdf" 的 pdf 文件位于 /storage/emulated/0/Documents/adobe.pdf

我通过 URL 链接下载了 pdf 并存储在文档中。这是我下载并存储它的方法。这是同一应用中的另一个活动。


    public  void DownloadBooks(String url,String title){

        DownloadManager.Request request=new DownloadManager.Request(Uri.parse(url));
        String tempTitle=title.trim();
        request.setTitle(tempTitle);
        if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB){
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
        }
        request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOCUMENTS,tempTitle+".pdf");
        DownloadManager downloadManager=(DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
        request.setMimeType("application/pdf");
        request.allowScanningByMediaScanner();
        request.setAllowednetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
        downloadManager.enqueue(request);
    }
DownloadBooks("a link"," adobe");

下载完成后,pdf adobe.pdf 存储在 /storage/emulated/0/Documents/ ,我想查看此下载的 PDF。

我正在使用库来显示 PDF,但它不可见。这是我的代码

package com.shivansh.firebasedemo;



public class DownloadedPDFViewerActivity extends AppCompatActivity implements ViewPager.OnPagechangelistener,OnLoadCompleteListener {
    PDFView pdfView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_downloaded_p_d_f);

        
        pdfView =findViewById(R.id.pdfView);
        File root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
        File file = new File(root,"adobe.pdf");
        Log.i("5656",file.toString());
        pdfView.fromFile(file).
        enableSwipe(true)
        .defaultPage(0)
        .swipeHorizontal(false)

        .onLoad(this)
        .load();

    }
    
    @Override
    public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    @Override
    public void loadComplete(int nbPages) {
    }
}

上面的日志语句打印

2021-05-06 03:13:31.734 9470-9470/com.shivansh.firebasedemo I/5656: /storage/emulated/0/Documents/adobe.pdf

这表明我在设备上找到了文件的正确位置。

ScreenShot of the PDF path from my phone

现在,我如何使这个 pdf 在我的活动中呈现?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)