android-在WebView中加载本地html?
我想使用“ [file:///”]将本地html加载到WebView中而不使用,因为这不允许cookie。 有没有办法使用“ localhost”之类的东西?
其次,我找不到在getSettings()中启用cookie的方法。 因为使用“ [file:///”时不允许使用cookie。]
Jash Sayani asked 2020-08-03T20:02:51Z
5个解决方案
100 votes
您只能这样做。 此解决方案从String变量加载HTML:
String html = "
Hello, World!";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);
编辑:尝试根据您的需要设置loadDataWithBaseURL()的第一个参数(baseURL)
answered 2020-08-03T20:03:10Z
14 votes
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);
}
Viren Savaliya answered 2020-08-03T20:03:25Z
9 votes
试试这个代码。 这个对我有用。
WebView mDesc = findViewById(R.id.descWv);
WebSettings settings = mDesc.getSettings();
settings.setDefaultTextEncodingName("utf-8");
mDesc.loadData(mDescText, "text/html; charset=utf-8",null);
Alican Temel answered 2020-08-03T20:03:45Z
4 votes
如果要通过Android访问localhost,则需要使用http://10.0.2.2:35643/,其中35643是特定端口(如果需要)。
sahhhm answered 2020-08-03T20:04:05Z
0 votes
以下代码为我工作。
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");
DroidBot answered 2020-08-03T20:04:25Z