Je veux charger un html local dans une 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 getSettings (). Parce que les cookies ne sont pas autorisés lors de l'utilisation de "file: ///".
Vous ne pouvez faire que 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 (l'URL de base) de loadDataWithBaseURL () pour vos besoins
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);
}
Essayez ce code. Ça marche 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);
Si vous souhaitez accéder à localhost
via Android, vous devez utiliser http://10.0.2.2:35643/
où 35643 est le port spécifique, si nécessaire.
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");