2013-07-20 5 views
2

J'ai une WebView et je charger la page en utilisant webView.loadUrl("http://myurl.com") et la page est montré correcte sur Android 4.X mais tout en essayant sur 2.X, plus spécifiquement 2.3.5 un texte brut est affiché similaire à enter image description hereWebView Android montre le texte brut

Quel est le problème et comment le résoudre? Merci!

Mon code complet:

public class FragmentPolicy extends SherlockFragment implements Refreshable { 
private WebView webView; 
private Bundle webViewBundle; 
private UpdateReceiver updateReceiver; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    updateReceiver = new UpdateReceiver(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.fragment_policy, container, false); 

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

    webView.setWebViewClient(new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if(url.startsWith("mailto:")){ 
       MailTo mt = MailTo.parse(url); 
       Intent i = newEmailIntent(getSherlockActivity(), mt.getTo(), mt.getSubject(), mt.getBody(), mt.getCc()); 
       startActivity(i); 
       view.reload(); 
       return true; 
      } else { 
       view.loadUrl(url); 
      } 
      return true; 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      webView.stopLoading(); 
      webView.clearView(); 
      Log.w("test", "Could not get policy: " + description + " Errror code: " + errorCode + ". Url: " + failingUrl); 
     } 
    }); 

    loadPolicy(); 

    return ll; 
} 

private void loadPolicy(){ 
    if (webViewBundle == null) { 

     Map<String, String> headers = new HashMap<String, String>(); 
     //does not work with webview 
     headers.put("Content-Type", "text/html; charset=utf-8"); 
     headers.put("Accept", "text/html"); 


     webView.loadUrl(Utils.getBaseAPIAddr()+"getpolicyhtml", headers); 

     //webView.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString()); 

    } else { 
     webView.restoreState(webViewBundle); 
    } 
} 



private Intent newEmailIntent(Context context, String address, String subject, String body, String cc) { 
    Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] {address}); 
    intent.putExtra(Intent.EXTRA_TEXT, body); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putExtra(Intent.EXTRA_CC, cc); 
    intent.setType("message/rfc822"); 
    return intent; 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    webViewBundle = new Bundle(); 
    webView.saveState(webViewBundle); 
} 

@Override 
public void onResume(){ 
    super.onResume(); 
    LocalBroadcastManager.getInstance(getSherlockActivity()).registerReceiver(updateReceiver, new IntentFilter("update")); 
} 

@Override 
public void onStop(){ 
    super.onStop(); 
    if(updateReceiver != null){ 
     LocalBroadcastManager.getInstance(getSherlockActivity()).unregisterReceiver(updateReceiver); 
    } 
} 

@Override 
public void refresh(){ 
    loadPolicy(); 
} 

public class UpdateReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     loadPolicy(); 
    } 
} 
} 

choses que j'essayé
* Enregistrer le code HTML dans le dossier de l'actif par copier manuellement et coller là-bas et puis chargez le HTML enregistré fonctionne très bien. Mais pourquoi ne puis-je le charger sur le Web?

+0

Pouvez-vous télécharger le code ainsi? – Lucifer

+0

Ajout du code et des choses que j'ai essayées. – TutenStain

+0

Ce n'est que deux lignes, par code, je veux dire le fichier complet ou plus de code, nous ne pouvons pas assumer d'autres lignes de votre code en voyant juste au-dessus de deux lignes. – Lucifer

Répondre

1

font comme ça

private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

puis définissez avec votre client WebView vue web comme celui-ci

web.setWebViewClient(new HelloWebViewClient()); 
Questions connexes