我的Webview正在加载Google Chrome.当用户浏览Webview应用程序时,他可以导航到任何工作正常的链接.但当用户导航到包含pdf的链接时,我的Webview无法打开或下载该文件.我怎样才能做到这一点?

public class WebViewPage extends AppCompatActivity {
WebView webView;
Button closeweb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view_page);

    webView =findViewById(R.id.webview);
    closeweb = findViewById(R.id.closeweb);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);


     webView.setWebViewClient(new WebViewClient());

    webView.loadUrl("https://www.google.in");
     closeweb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(WebViewPage.this, HomePage.class);
            startActivity(intent);
        }
    });

}
@Override
public void onBackPressed() {

}

} enter image description here

推荐答案

或者,如果您想打开PDF或任何其他格式,如xlsx或等.您可以使用以下命令:

@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
    webView.loadUrl(url);
    if (url.endsWith(".pdf") || url.endsWith(".xlsx") || url.endsWith(".xls") || url.endsWith(".doc") || url.endsWith(".docx") || url.endsWith(".ppt") || url.endsWith(".pptx")) {
        webView.loadUrl("https://docs.google.com/gview?embedded=true&url=" + url);
       
        return true;
    }
    return false;
}

这将使用谷歌的服务来打开任何类型的文件(由谷歌文档支持).

Java相关问答推荐

javafx getHostServices(). showDocument()调出Chrome而不是默认浏览器(Linux)

无法了解Java线程所消耗的时间

GSON期间的Java类型擦除

在Java中如何从Executors.newFixedThreadPool(MAX_THREAD_COUNT())迁移到虚拟线程

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

每次FXMLLoader调用ApplationConext.getBean(类)时创建@Component的新实例

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

Instancio未在日志(log)中显示测试失败消息

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

Quarkus:运行时出现EnumConstantNotPresentException

在WHILE()循环初始化部分中声明和初始化变量的Java语法?

Java递归泛型是否可以被视为继承和重写的语法糖

从字节数组切换到JakartaMail org.springframework.mail.javamail.JavaMailSender InputStreamResource

message.acknowledge()没有';在使用Spring Boot在ActiveMQ中读取消息后,t将消息出列

using case default on switch语句返回;预览特征切换中的模式匹配仅在源级别20及以上的情况下可用;

如何转换Vector<;对象>;转换为int?

UuidGenerator Bean 类型不匹配?

人们在 IntelliJ 上将-Dhttp.proxyHost=your.proxy.net -Dhttp.proxyPort=8080放在哪里?

Keycloak + Spring Boot 角色认证不起作用