44 votes

Charger le html local dans le WebView ?

Je veux charger un fichier html local dans un WebView SANS utiliser "file:///" car cela n'autorise pas les cookies. Existe-t-il un moyen d'utiliser quelque chose comme "localhost" ?

Deuxièmement, je n'ai pas trouvé de moyen d'activer les cookies dans la fonction getSettings(). Parce que les cookies ne sont pas autorisés lorsqu'on utilise "file:///".

102voto

Tu peux seulement faire quelque chose comme ça. Cette solution charge le HTML à partir d'une variable String :

String html = "<html><body>Hello, World!</body></html>";
String mime = "text/html";
String encoding = "utf-8";

WebView myWebView = (WebView)this.findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadDataWithBaseURL(null, html, mime, encoding, null);

EDIT : essayez de définir le premier paramètre (le baseURL) de la fonction loadDataWithBaseURL() pour vos besoins

14voto

Viren Savaliya Points 398
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        WebView view = (WebView) findViewById(R.id.webView1);
        try {
        InputStream input = getResources().openRawResource(R.raw.lights);
        Reader is = new BufferedReader(
                new InputStreamReader(input, "windows-1252"));

            //InputStream input = getAssets().open("ws.TXT");
            int size;
            size = input.available();
            byte[] buffer = new byte[size];
            input.read(buffer);
            input.close();
            // byte buffer into a string
            javascrips = new String(buffer);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // String html = readFile(is);

        view.loadDataWithBaseURL("file:///android_res/raw/", javascrips, "text/html",
                "UTF-8", null);
    }

0 votes

Joli extrait de code, il manque juste la définition ` String javascrips;`.

0 votes

Javascrips est tout texte de fichiers html. comme <html><body> ... </html>

0 votes

Je fais un pas de plus. webview.loadUrl("file:///android_res/raw/help.html") ;

9voto

Alican Temel Points 1025

Essayez ce code. Il fonctionne pour moi.

WebView mDesc = findViewById(R.id.descWv);
WebSettings settings = mDesc.getSettings();
settings.setDefaultTextEncodingName("utf-8");
mDesc.loadData(mDescText, "text/html; charset=utf-8",null);

4voto

sahhhm Points 2957

Si vous voulez accéder à localhost par le biais d'Android, vous devez utiliser http://10.0.2.2:35643/ où 35643 est le port spécifique, si nécessaire.

0voto

DroidBot Points 1687

Le code suivant a fonctionné pour moi.

String base64EncodedString = null;
try {
    base64EncodedString = android.util.Base64.encodeToString(
        (preString+mailContent.getBody() + postString).getBytes("UTF-8"), 
        android.util.Base64.DEFAULT);
} catch (UnsupportedEncodingException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
if (base64EncodedString != null)
{
    wvMailContent.loadData(base64EncodedString, "text/html; charset=utf-8", "base64");  
}
else
{
wvMailContent.loadData(preString+mailContent.getBody() + postString, "text/html; charset=utf-8", "utf-8");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X