Приложения html5 для планшетов: можно ли загружать изображения из файловой системы устройства? - PullRequest
0 голосов
/ 01 сентября 2011

Я создал простой HTML-файл, который загружает некоторые изображения с моего локального жесткого диска (Ubuntu).Достаточно поставить

 <img src=/home/user/directory/image.jpg></img>

Теперь мне нужно знать, то же самое, когда Html5 отображается на планшете, таком как Android или iOS, или Html5 используется в автономном приложении.Я имею в виду, если html5 может загрузить изображение из файловой системы устройства, как на моем компьютере, без localStorage или sessionStorage.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Если вы развернете приложение как собственное приложение, это возможно (оберните его с помощью Phonegap).

Для сохраненных файлов HTML это невозможно.

0 голосов
/ 01 сентября 2011

На Android это можно сделать, хотя поначалу это выглядит немного хитро.Скажем, вы определили WebView в layout.xml, который вы хотите заполнить html-файлом, поставляемым с вашим приложением, который, в свою очередь, должен импортировать png, также поставляемый с вашим приложением.

Хитрость заключается в том, чтобыHTML-файл в res/raw и png в assets.

Пример.

Скажем, у вас есть hello.html, который должен включать buongiorno.png.

  1. В вашем проекте, скажем, MyProject, поместите buongiorno.png в MyProject/assets.

  2. 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...