На Android это можно сделать, хотя поначалу это выглядит немного хитро.Скажем, вы определили WebView в layout.xml, который вы хотите заполнить html-файлом, поставляемым с вашим приложением, который, в свою очередь, должен импортировать png, также поставляемый с вашим приложением.
Хитрость заключается в том, чтобыHTML-файл в res/raw
и png в assets
.
Пример.
Скажем, у вас есть hello.html
, который должен включать buongiorno.png
.
В вашем проекте, скажем, MyProject
, поместите buongiorno.png
в MyProject/assets
.
hello.html
входит в MyProject/res/raw
(потому что мы хотим избежатьон «оптимизирован» компилятором ресурсов Android) и может выглядеть следующим образом:
<html>
<head></head>
<body>
<img src="file:///android_asset/buongiorno.png"/>
<p>Hello world.</p>
</body>
</html>
В вашем коде Java вы должны поместить этот код:
WebView w = (WebView) findViewById(R.id.myWebview);
String html = getResourceAsString(context, R.raw.hello);
if (html != null) {
w.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
}
где getResourceAsString()
определяется следующим образом:
public static String getResourceAsString(Context context, int resid) throws NotFoundException {
Resources resources = context.getResources();
InputStream is = resources.openRawResource(resid);
try {
if (is != null && is.available() > 0) {
final byte[] data = new byte[is.available()];
is.read(data);
return new String(data);
}
} catch (IOException ioe) {
throw new RuntimeException(ioe);
} finally {
try {
is.close();
} catch (IOException ioe) {
// ignore
}
}
return null;
}