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.
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
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);
}
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);
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.
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");