Android WebView ne charge pas L'URL

Je veux charger le URL dans WebView

J'ai utilisé le Code suivant:

webView = (WebView) findViewById(R.id.webview1);
webView.setWebViewClient(new HostsWebClient());
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setSupportMultipleWindows(false);
webView.getSettings().setSupportZoom(false);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);

webView.loadUrl(URL);

Mais quand je l'exécute, Je ne suis pas capable de charger l'url. Je reçois la page web non disponible.

Quelqu'un pourrait-il aider?

27
demandé sur Edward Falk 2013-04-25 09:35:15

6 réponses

Avez-vous Ajouté l'autorisation internet dans votre fichier manifeste ? si pas d'ajouter la ligne suivante.

 <uses-permission android:name="android.permission.INTERNET"/> 

J'espère que cela vous aidera.

Modifier

Utilisez les lignes ci-dessous.

public class WebViewDemo extends Activity {


    private WebView webView;


    Activity activity ;
    private ProgressDialog progDailog; 

    @SuppressLint("NewApi")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        activity = this;

        progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true);
        progDailog.setCancelable(false);



       webView = (WebView) findViewById(R.id.webview_compontent);



       webView.getSettings().setJavaScriptEnabled(true);     
       webView.getSettings().setLoadWithOverviewMode(true);
       webView.getSettings().setUseWideViewPort(true);        
        webView.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                progDailog.show();
                view.loadUrl(url);

                return true;                
            }
            @Override
            public void onPageFinished(WebView view, final String url) {
                progDailog.dismiss();
            }
        });

        webView.loadUrl("http://www.teluguoneradio.com/rssHostDescr.php?hostId=147");

       }
77
répondu itsrajesh4uguys 2013-04-25 05:51:11

Ajouter une autorisation d'autorisation Internet dans le manifeste.

Comme <uses-permission android:name="android.permission.INTERNET"/>

Ce code fonctionne

  public class WebActivity extends Activity {
  WebView wv;

 String url="http://www.teluguoneradio.com/rssHostDescr.php?hostId=147";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);
    wv=(WebView)findViewById(R.id.webUrl_WEB);



WebSettings webSettings = wv.getSettings();
    wv.getSettings().setLoadWithOverviewMode(true);
    wv.getSettings().setUseWideViewPort(true);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setPluginState(PluginState.ON);


    wv.setWebViewClient(new myWebClient());

    wv.loadUrl(url);
}




public class myWebClient extends WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }
}
15
répondu Rank 2013-04-25 05:55:23

Peut-être SSL

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        // ignore ssl error
        if (handler != null){
            handler.proceed();
        } else {
            super.onReceivedSslError(view, null, error);
        }
    }
6
répondu wanpen 2017-06-15 05:09:57

Utilisez les éléments suivants sur votre webview

webview.setWebChromeClient(new WebChromeClient());

Ensuite, implémentez les méthodes requises pour la classe WebChromeClient.

4
répondu vinoth 2013-04-25 05:58:22

Tout d'abord, vérifiez si vous avez l'autorisation internet dans le fichier manifeste.

<uses-permission android:name="android.permission.INTERNET" />

Vous pouvez ensuite ajouter le code suivant dans la méthode onCreate() ou initialize () -

final WebView webview = (WebView) rootView.findViewById(R.id.webview);
        webview.setWebViewClient(new MyWebViewClient());
        webview.getSettings().setBuiltInZoomControls(false);
        webview.getSettings().setSupportZoom(false);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setAllowFileAccess(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.loadUrl(URL);

Et écrire une classe pour gérer les rappels de webview -

public class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                           //your handling...
                return super.shouldOverrideUrlLoading(view, url);
        }
    }

Dans la même classe, vous pouvez également utiliser d'autres rappels importants tels que -

- onPageStarted()
- onPageFinished()
- onReceivedSslError()

En outre, vous pouvez ajouter "SwipeRefreshLayout" pour activer swipe refresh et actualiser le webview.

<android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipeRefreshLayout"
        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" />
    </android.support.v4.widget.SwipeRefreshLayout>

Et actualisez le webview lorsque l'utilisateur glisse écran:

SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
            mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            mSwipeRefreshLayout.setRefreshing(false);
                            webview.reload();
                        }
                    }, 3000);
                }
            });
1
répondu DsD 2015-10-08 06:18:04

Juste comme une solution alternative:

Pour moi webView.getSettings().setUserAgentString("Android WebView") a fait l'affaire.

J'avais déjà implémenté l'autorisation INTERNET et WebViewClient ainsi que WebChromeClient

0
répondu mad_manny 2017-01-13 13:15:40