Display two WebViewClients in one Android WebView

30 Views Asked by At

I am making an Android webview. My problem is that I want to display two pieces of code at the same time in a webview and activity, but only one of them works.

Code 1:

p_webview.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView p_view,WebResourceRequest p_wrr,WebResourceError p_wre){
super.onReceivedError(p_view,p_wrr,p_wre);
p_webview.loadUrl("file:///android_asset/error.html");
}});

Code 2:

p_webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView p_view,WebResourceRequest p_wrr){
p_intent_browser=new Intent(Intent.ACTION_VIEW,p_wrr.getUrl());
p_view.getContext().startActivity(p_intent_browser);
return true;
}});

You can see my original code below: MainActivity.java:

package com.app;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity{
public WebView p_webview;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_majn);



p_webview=(WebView)findViewById(R.id.p_webview_proxy);
p_webview.setWebViewClient(new WebViewClient());
p_webview.getSettings().setJavaScriptEnabled(true);
p_webview.loadUrl("file:///android_asset/index.html");



p_webview.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView p_view,WebResourceRequest p_wrr,WebResourceError p_wre){
super.onReceivedError(p_view,p_wrr,p_wre);
p_webview.loadUrl("file:///android_asset/error.html");
}});



p_webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView p_view,WebResourceRequest p_wrr){
Intent p_intent_browser=new Intent(Intent.ACTION_VIEW,p_wrr.getUrl());
p_view.getContext().startActivity(p_intent_browser);
return true;
}});



    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

</LinearLayout>

thanks!

0

There are 0 best solutions below