Как получить доступ к локальным ресурсам с удаленного URL в Android WebView? - PullRequest
4 голосов
/ 02 июня 2011

Для загрузки ресурса в HTML я использую URL file:///android_asset/my_image.png. Это работает, когда я загружаю HTML локально, например, используя метод WebView.loadData().

Однако я не могу загрузить локальный ресурс с удаленного веб-сайта, например, когда я загружаю страницу с помощью WebView.loadUrl("http://example.com/my_page.html"). Показывает страницу, но изображение не загружено.

Как я могу решить эту проблему?

UPDATE:

Таркешвар упомянул, что это невозможно из соображений безопасности. Я понимаю, что когда вы открываете веб-страницу в браузере, вы как пользователь не можете контролировать доступ к веб-странице. И это также немного отличается от доступа к локальной файловой системе, когда вы можете читать конфиденциальные данные пользователя. Здесь я хотел бы просто получить доступ к ресурсам приложения.

Обходным путем может быть загрузка страницы и загрузка ее в WebView с использованием метода loadData(). Но может быть какой-то переключатель безопасности, позволяющий WebView получать доступ к локальным ресурсам.

UPDATE2: Мне нужно поддерживать Android 2.3 +.

Ответы [ 2 ]

1 голос
/ 25 июля 2013

Расширьте WebViewClient и переопределите mustInterceptRequest, чтобы загрузить файл локально. Все URL будут казаться удаленными, но вы можете выборочно загружать все, что вам нужно.

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldInterceptRequest(android.webkit.WebView, java.lang.String)

Также ответили здесь: пример просмотра веб-сайта должен перехватить запрос

1 голос
/ 02 июня 2011

Вы не можете ссылаться на локальный ресурс с внешней страницы.Это связано с соображениями безопасности.

См. Ответ Пекки на похожий вопрос: Как показать локальную картинку на веб-странице?

...