Webview & Local Images

Ответить
x.dr
Сообщения: 5
Зарегистрирован: 14 июн 2013, 16:22

Webview & Local Images

Сообщение x.dr » 14 ноя 2013, 15:52

Приветствую!

В общем задолбался я с гуглами и стэковерлоуами... Вопрос такой:

Есть изображение формата .png
Есть html файл
Надо показать в webview html с картинками png - не получается...

Сложность в том, что мои изображения не находятся в самой проге, т.е в папках типа assets или raw.. поэтому я не могу воспользоваться примерами адресации изображений типа android_assets мои фотки запакованы в zip и при порвом запуске я их распоковываю в /data/data/com.app/

там же лежат html файлы, там адреса я проставлял просто src="img.png" и со слешем src="/img.png" и вот так src="file///data/data/com.app/img.png" - на выходе никакой разницы, текст я норм читаю а фотки не показываются, помогите плиз!!!

Как правильно прописать адрес к локальным картинкам в локальном html файле?
P.S. Фотки и html файлы после первого запуска действительно лежат там где должны лежать! - у меня рут доступ - проверено!
Не советуйте мне впихнуть фотки в пакетный файл - у меня их 7000!!!

Заранее благодарю!

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Webview & Local Images

Сообщение trew » 14 ноя 2013, 17:30

У меня всё работает, сделано на основе урока 32:

[syntax=java]
import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

final String TAG ="mylog";
File htm;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

(findViewById(R.id.btnWeb)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(Intent.ACTION_VIEW);
File f = new File("/sdcard/html/test.html");
in.setDataAndType(Uri.fromFile(f), "text/html");
startActivity(in);
}
});
}
}
[/syntax]

[syntax=html5]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Заголовок документа</TITLE>
</HEAD>
<BODY>
Текст документа
<img src="mypic.png" alt="альтернативный текст">
</BODY>
</HTML>
[/syntax]

Права в AndroidManifest.xml
[syntax=xml]<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />[/syntax]
Вложения
02.png
02.png (20.95 КБ) 5120 просмотров
01.png
01.png (10.2 КБ) 5120 просмотров
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

x.dr
Сообщения: 5
Зарегистрирован: 14 июн 2013, 16:22

Re: Webview & Local Images

Сообщение x.dr » 21 ноя 2013, 07:59

trew, к сожалению "никаких" изменений, я сейчас покопался в stackoverflow и подумал может дело в Base Url и стал вызывать код так:

Код: Выделить всё

webview.loadDataWithBaseURL(baseURL, myContent, "text/html", "UTF-8", null);
Где
baseURL="file:///mnt/sdcard/.dir"; - .dir - папка где находятся файлы html и изображений
myContent - считанный html код текущего документа..

На выходе я получаю нормальное отображение html но вместо изображений показываются синие квадратики со знаком вопроса (это и есть изменение после смены loadData на loadDataWithBaseURL - раньше вместо изображений просто были пустые области)

На буржнете говорят что это ошибка Flash Player но причем Flash Player когда я открываю фотки? - Стало быть причина в другом...
Если открыть сам html файл через Opera Mobile или Dolphin все прекрасно работает и показывается! - Помогите пожалуйста!

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Webview & Local Images

Сообщение trew » 21 ноя 2013, 09:57

Обнаружил в своём коде неправильность.
так писать нельзя:
File f = new File("/sdcard/html/test.html");

так как на всех устройствах путь к sd-карте разный. нужно так:
File f= Environment.getExternalStorageDirectory();
а далее прибавлять к этому пути
"/html/test.html"
Только это всё нужно привести к типу String (когда соединяем эти строки), а затем к типу File.
x.dr писал(а):Если открыть сам html файл через Opera Mobile или Dolphin все прекрасно работает и показывается!
Такое может быть, когда во встроенном браузере не включено что-то.
Вот пример для включения Java. Нужно поискать может ещё что-то включить.
[syntax=java] // Java enable
// webView.getSettings().setJavaScriptEnabled(true); [/syntax]
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

x.dr
Сообщения: 5
Зарегистрирован: 14 июн 2013, 16:22

Re: Webview & Local Images

Сообщение x.dr » 21 ноя 2013, 11:55

там нечего больше включать (в GetSettings) есть loadImagesAutomatically и blocknetimages - все это включил а изменений никаких, потестил на другом телефоне - та же фигня...

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Webview & Local Images

Сообщение trew » 21 ноя 2013, 13:52

x.dr писал(а):там нечего больше включать (в GetSettings) есть loadImagesAutomatically и blocknetimages - все это включил а изменений никаких, потестил на другом телефоне - та же фигня...
Как это нечего включать? У браузера куча настроек.

Откройте браузер - Меню - Настройки.
(нужно поискать, как программно это задавать, если отключено)

Первый скриншот в интернете нашел, остальные у меня в браузере.
Вложения
01.jpg
01.jpg (19.55 КБ) 5066 просмотров
02.png
02.png (11.65 КБ) 5066 просмотров
03.png
03.png (15.75 КБ) 5066 просмотров
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Ответить