java - 在 webview 中查看 Firebase 存储 pdf 文件
问题描述
我正在尝试使用 webview 显示保存在 Firebase 存储中的 PDF 文件。但是我收到的视图只是顶部的空白和灰色。
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;
}
}
片段性能.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 加载。
推荐阅读
- ruby - 无法从 Rails 6 应用程序的 Google Secret Manager 检索密钥
- html - Create a slider menu in pure CSS with a Trigger Button
- node.js - 为什么当我更改它的数据时这个文件的哈希值保持不变?
- forms - StackLayout 的平台渲染器是什么?
- python - 意外的内置记录器行为:记录器名称与“。”重复
- c# - How can I stop game when I run a animation windows?
- java - Wiremock stubing multiple URLs giving code 500
- amazon-web-services - How do I create a lambda function via terraform with my source zip in a remote location?
- jquery - Creating a function to use in getJSON callback
- architecture - 在三层架构中,代码是存储在应用层还是数据库层?