java - 在 webview 中查看 Firebase 存储 pdf 文件

标签 java android firebase-storage

我正在尝试使用 WebView 显示保存在 Firebase 存储中的 PDF 文件。但是我收到的 View 只有顶部是空白和灰色的。

public class PerformanceFragment extends Fragment {

    private WebView webView;
    private String postUrl = "https://firebasestorage.googleapis.com/v0/b/sas-android-73b28.appspot.com/o/sequence.pdf?alt=media&token=9fc1de4e-1059-4b2b-865e-1c44453a7eb8";



    public PerformanceFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View root = inflater.inflate(R.layout.fragment_performance, container, false);


        webView =  root.findViewById(R.id.webView);

        webView.getSettings().setJavaScriptEnabled(true);

        webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + postUrl);

        webView.setHorizontalScrollBarEnabled(false);

        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                getActivity().setTitle("Loading...");
                getActivity().setProgress(progress * 100);

                if(progress == 100)
                    getActivity().setTitle(R.string.app_name);
            }
        });


            return root;
    }


}

fragment 性能.xml

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".PerformanceFragment">


    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        />

</android.support.v4.widget.NestedScrollView>

我已通过身份验证,但没有显示任何其他内容。屏幕截图如下:1

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

 final ProgressDialog pDialog = new ProgressDialog(getActivity());
    pDialog.setTitle("Course PDF");
    pDialog.setMessage("Loading...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);

    webView=view.findViewById(R.id.pdfviewr);
    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            pDialog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            pDialog.dismiss();
        }
    });
    String url="";
    String pdf = "https://firebasestorage.googleapis.com/v0/b/mindlabz-6f809.appspot.com/o/course_content%2FCracking%20the%20Coding%20Interview.pdf?alt=media&token=12a7fb3d-92d8-49f6-bd13-f88ec634c06c";
    try {
        url=URLEncoder.encode(pdf,"UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url="+url);
    return view;
}

试试这个代码

URL 转换为 UTF-8 并且它也可以从 firebase 加载。

关于java - 在 webview 中查看 Firebase 存储 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560681/

相关文章:

java - 如何使用java在MongoDB的集合中插入嵌入文档

java - 使用 jaxb 外部绑定(bind)自定义时出错

android - 如何在 Android 中播放音频时显示 MediaController?

Android Gradle 失败 多个 dex 文件定义 okhttp

arrays - Firebase 存储异步图像下载顺序不正确

firebase - 默认 FirebaseApp 在此进程 com.example.example 中未初始化。确保首先调用 FirebaseApp.initializeApp(Context)

java - Android PowerPoint 远程

android - 如果在股票浏览器上受密码保护的站点后面,则 APK 下载失败

ios - Firebase Storage getData 在 collectionView 中无序加载图像

java - 当我使用 new Thread().interrupt(); 时,线程真的停止了吗?