2012-07-16 7 views
0

Comment puis-je afficher mon code HTML personnalisé s'il n'y a pas de connexion de données sur le téléphone?Android Webview - HTML personnalisé

HTML personnalisé Code:

String customHtml = "<html><body>Hello, WebView</body></html>"; 
webView.loadData(customHtml, "text/html", "UTF-8"); 

Voici mon code complet:

package com.webbrowser.android; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends Activity { 

private WebView webView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.setWebViewClient(new WebViewClient()); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.loadUrl("http://domain.com"); 
} 

}

EDIT:

Est-ce vrai? Cela ne fonctionne pas sur l'émulateur. Pourriez-vous s'il vous plaît regarder à nouveau?

EDIT2:

supports Ajouté.

public class MainActivity extends Activity { 

    private WebView webView; 

    public boolean isConnected() { 
     ConnectivityManager cm = 
      (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

     return (cm.getActiveNetworkInfo() != null && 
      cm.getActiveNetworkInfo().isConnectedOrConnecting()); 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 

     webView = (WebView) findViewById(R.id.webView1); 
     webView.setWebViewClient(new WebViewClient()); 
     webView.getSettings().setJavaScriptEnabled(true); 

     if(!isConnected()) { 
      String customHtml = "<html><body>Hello, WebView</body></html>"; 
      webView.loadData(customHtml, "text/html", "UTF-8"); 
     } else { 
      webView.loadUrl("http://domain.com"); 
      } 

    } 
} 

Répondre

0

Puisque vous chargez un code HTML spécifique (de base), il se chargera sans connexion de données ...

+0

Le code HTML personnalisé Je n'est pas ajouté à la code principal pour le moment. – user1273409

1

Vérifiez d'abord la connectivité à l'aide:

public boolean isConnected() { 
    ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    return (cm.getActiveNetworkInfo() != null && 
     cm.getActiveNetworkInfo().isConnectedOrConnecting()) 
} 

Ensuite, en fonction de la résultat appeler la méthode appropriée:

if(!isConnected()) { 
    String customHtml = "<html><body>Hello, WebView</body></html>"; 
    webView.loadData(customHtml, "text/html", "UTF-8"); 
} else { 
    webView.loadUrl("http://domain.com"); 
} 
+0

S'il vous plaît regardez ma modification. – user1273409

+0

s'il vous plaît vérifier mon code édité, vous devez mettre ces lignes entre crochets (cm.getActiveNetworkInfo()! = Null && cm.getActiveNetworkInfo(). IsConnectedOrConnecting()) comme ceci. – Waqas

+0

C'est le même problème. Ont ajouté des crochets. – user1273409

0

Veuillez utiliser la fonction webviewclients onReceivedError. Cela fonctionnera quelles de type de connexion.

public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) { 
     // Load custom data into webview depending on errorcode 
    } 
0

Hey u peut essayer ce code, il fonctionne très bien

public class SudhirAwesome extends Activity { 
WebView webView; 
String html = "<!DOCTYPE html>\n" + 
     "<html>\n" + 
     "<head>\n" + 
     "</head>\n" + 
     "<body>\n" + 
     "\n" + 
     "<h1>Can you please check your Internet Connection</h1>\n" + 
     "\n" + 
     "</body>\n" + 
     "</html>\n"; 



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

    webView = (WebView) findViewById(R.id.webview_sportee); 
    webView.getSettings().setLoadsImagesAutomatically(true); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webView.setWebViewClient(new MyBrowser()); 
    if(haveNetworkConnection()){ 
     webView.loadUrl("http://blah.blah.com"); 
    } 
    else{ 
     webView.loadData(html,"text/html", "UTF-8"); 

     Toast.makeText(getApplicationContext(),"Please Check your Internet Connection",Toast.LENGTH_LONG).show(); 
    } 

    //This acts like browser only 
} 

private class MyBrowser extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     try { 
      view.loadUrl(url); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
} 
private boolean haveNetworkConnection() { 
    boolean haveConnectedWifi = false; 
    boolean haveConnectedMobile = false; 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
    for (NetworkInfo ni : netInfo) { 
     if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
      if (ni.isConnected()) 
       haveConnectedWifi = true; 
     if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
      if (ni.isConnected()) 
       haveConnectedMobile = true; 
    } 
    return haveConnectedWifi || haveConnectedMobile; 
} 

et U doivent donner ces autorisations aussi

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
Questions connexes