【发布时间】:2020-08-04 16:06:45
【问题描述】:
我正在开发一个 android 应用程序,我必须通过在实际 URL 之前附加 http://drive.google.com/viewerng/viewer?embedded=true&url= 来在 web 视图中加载 PDF。但是加载后它没有预览文档并说“没有可用的预览”。但是在 iOS webview 和 Desktop chrome 中加载了相同的文档。同时,来自互联网的其他 PDF 文件正在正确加载。我不知道是文件问题还是我的代码问题。这是我的代码
`
public class WebViewActivity extends AppCompatActivity {
private WebView webView;
private String postUrl;
private String doc_type;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
this.webView = (WebView) findViewById(R.id.webView);
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.setHorizontalScrollBarEnabled(false);
this.webView.getSettings().setAllowFileAccess(true);
doc_type = getIntent().getStringExtra("doc_type");
String url = getIntent().getStringExtra("click_action_url");
if (doc_type != null && doc_type.equalsIgnoreCase("others")) {
postUrl = url;
} else{
postUrl = "http://drive.google.com/viewerng/viewer?embedded=true&url=" + url;
}
this.webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
}
});
this.webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
this.webView.loadUrl(postUrl);
}
}`
请有人帮忙。
【问题讨论】:
-
使用 https:// 代替 http:// 或 google 使用ClearTextTraffic。
-
尝试将 url 编码为 UTF-8 ,我在这里回答stackoverflow.com/a/67245546/1843984
标签: android pdf android-webview google-chrome-app