webentwicklung-frage-antwort-db.com.de

Laden Sie lokales HTML in WebView?

Ich möchte eine lokale HTML-Datei OHNE "file: ///" in eine WebView laden, da dies keine Cookies zulässt. Gibt es eine Möglichkeit, so etwas wie "localhost" zu verwenden?

Zweitens konnte ich in getSettings () keine Möglichkeit finden, Cookies zu aktivieren. Weil Cookies bei der Verwendung von "file: ///" nicht erlaubt sind.

40
Jash Sayani

Sie können nur so etwas tun. Diese Lösung lädt HTML aus einer String-Variablen:

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);

BEARBEITEN: Versuchen Sie, den ersten Parameter (die baseURL) von loadDataWithBaseURL () für Ihre Anforderungen festzulegen

98
user432219
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);
    }
14
Viren Savaliya

Versuchen Sie diesen Code. Für mich geht das.

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

Wenn Sie über Android auf localhost zugreifen möchten, müssen Sie http://10.0.2.2:35643/ wobei 35643 der spezifische Port ist, falls erforderlich.

4
sahhhm

Der folgende Code hat bei mir funktioniert.

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");
0
DroidBot