Урок 32. Пишем простой браузер

Обсуждение уроков
eone
Сообщения: 1
Зарегистрирован: 25 авг 2013, 22:58

Re: Урок 32. Пишем простой браузер

Сообщение eone » 26 авг 2013, 17:55

Помогите пожалуйста разобраться. Вообщем есть роутер, перепрошит в альтернативную прошивку. с помощью mjpeg stream шлет постоянный видеопоток в порт 8080, и слушает поступающие команды в порт 2000, которые потом пересылает на микроконтроллер.
Итак: можно ли с помощью webview просматривать потоковое видео? сейчас при обращении к странице роутера через webview она прогружается, но без видеотрансляции на андроид (т.е. просто html роутера)

bezobraz1e
Сообщения: 1
Зарегистрирован: 10 сен 2013, 18:54

Re: Урок 32. Пишем простой браузер

Сообщение bezobraz1e » 10 сен 2013, 19:01

Здравствуйте. Как реализовать показ отдельных элементов страницы html?

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

Re: Урок 32. Пишем простой браузер

Сообщение trew » 03 окт 2013, 18:47

При запуске программы, мне предлагается выбор из двух браузеров, выбираю стандартный (не тот который я написал в этом уроке). Запускаю google.play.com и решил установить одну из программ.
Под кнопкой Установить (на сайте) возникает надпись: "У Вас нет устройств".
Так что, на виртуальный девайс нельзя установить программы из google.play ?
(eclipse + Android Virtual Device)

Любые другие файлы apk устанавливаются на устройство.
Инструкция ниже.
для этого нужно выложить файл из архива в папку на компьютере sdk\tools
(переложить из папки Install в папку sdk\tools файлики)
и запустить в командной строке cmd
cd C:\eclipse\sdk\tools
(выполнить)
adb install davinchi.apk
(выполнить)
Т.е. файл davinchi.apk, скопированный из интернета предварительно выложить в папку C:\eclipse\sdk\tools
(если у Вас SDK находится в другом месте на компьютере, маршрут будет соответственно другим)

это всё делается ради любопытства.
Вложения
adb.zip
(683.16 КБ) 312 скачиваний
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Kruler
Сообщения: 28
Зарегистрирован: 27 авг 2013, 13:02

Re: Урок 32. Пишем простой браузер

Сообщение Kruler » 03 окт 2013, 22:05

можно, у меня все нормально устанавливается

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

Re: Урок 32. Пишем простой браузер

Сообщение trew » 05 окт 2013, 21:30

Разобрался как открывать файл html из своего браузера, используя материал урока.
В примере ниже, показано как отрыть:
1. фрагмент html,
2. файл html из папки asset
3. файл html с SD-карты (подключить SD карту к эмулятору eclipse - это отдельная история)

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

public class MainActivity extends Activity {
	
	WebView webView;
	String data2;
	
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browser);

    webView=(WebView)findViewById(R.id.webView);
    
//    data2 = "<html><body>My Page<br><br>Текст сообщения!</body></html>";
//    webView.loadDataWithBaseURL(null,data2,"text/html" ,"utf-8",null);
    
//	webView.loadData("<html><body>My Page<br><br>This messages very important!</body></html>", "text/html", "UTF-8");
//	   
	// Java enable
//	webView.getSettings().setJavaScriptEnabled(true);
//	
	// Code text
//	webView.getSettings().setDefaultTextEncodingName("utf-8");
//	
//	webView.loadUrl("file:///android_asset/mypage.html");
//	
//	 webView.loadUrl("file:///android_asset/www/mypage.html");
//	 webView.loadUrl("file:///mnt/sdcard/mypage.html");
//	 webView.loadUrl("content://com.android.htmlfileprovider/sdcard/mypage.html");
   }
Раскомментируйте строку, которая интересна Вам и запустите проект.
R.layout.browser - взят из урока.
Файл AndroidManifest.xml - тоже взят из урока.

У некоторых пользователей возникает проблема с кодировкой,
и они пытаются добавить в html файл строку

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

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
но это не всегда помогает.
Для того, чтобы увидеть текст на русском в браузере в эмуляторе,
необходимо сам файл сохранять в кодировке UTF-8
т.е. Файл - Сохранить как - (указать кодировку), и так создавать все страницы html.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 32. Пишем простой браузер

Сообщение Radzhab » 20 окт 2013, 19:22

В общем хочу поменять css в html файле. Делаю гет запрос на сервер и перед отображением юзеру надо изменить style.css

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 32. Пишем простой браузер

Сообщение Radzhab » 21 окт 2013, 16:31

Как подменить свой css на css который видит Webview?

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

 ......

    final Activity activity = this;

    wv.setWebChromeClient(new WebChromeClient() {
      public void onProgressChanged(WebView view, int progress)
      {
        activity.setTitle(" "+LASTURL);
        activity.setProgress(progress * 100);

        if(progress == 100)
          activity.setTitle(" "+LASTURL);
      }
    });
    wv.setWebViewClient(new WebViewClient() {
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(getApplicationContext(), "Error: " + description+ " " + failingUrl, Toast.LENGTH_LONG).show();
      }

      @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
      {
        if (url.indexOf("habrahabr")<=0) {
          // the link is not for a page on my site, so launch another Activity that handles URLs
          Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
          startActivity(intent);
          return true;
        }
        return false;
      }

      public void onPageStarted (WebView view, String url, Bitmap favicon) {
        LASTURL = url;
      }

      public void onPageFinished (WebView view, String url) {

      }
    });

    wv.loadUrl("http://habrahabr.ru");
  }
}

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 32. Пишем простой браузер

Сообщение Radzhab » 22 окт 2013, 21:38

Ладно) черт с ним с последним сообщением. Как добавить jquery в проект андройда?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 32. Пишем простой браузер

Сообщение Foenix » 22 окт 2013, 21:54

R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 32. Пишем простой браузер

Сообщение Radzhab » 22 окт 2013, 22:32

Спасибо за ссылку) Но данное действие я уже опробовал.Нет там ничего

kefir_mbis
Сообщения: 5
Зарегистрирован: 31 окт 2013, 21:35

Re: Урок 32. Пишем простой браузер

Сообщение kefir_mbis » 31 окт 2013, 22:01

Всем привет. Подскажите новичку, пишу небольшую программу, она исполняет следующее:

Activity + Button---> WebView (на самом деле активностей больше, но там все сводится к переходу с одного экрана на другой)

Застрял как понимаете на webview. по урокам получается создать микро браузер, который задает вопрос, через что открывать ссылку. Но мне требуется открывать страницы внутри WebView, без перехода к стандартному браузеру, ну и чтобы он делал это без вопросов.

Скидываю вам кусок моего жалкого кода, тыкните носом где аннотацию убрать, а где я неправильно данные указал. Ошибки появляются только тут (в манифесте даны права на интернет, переход на активити выполнялся нормально)

ПС: вообще тут добавлен метод обработки кнопки Назад, чтобы при навигации в webview при нажатии этой самой кнопки выполнялся шаг назад (т.е. на предыдущую страницу, а не выйти из приложения), я его хоть правильно разместил?

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

package com.vbgroup.myneruyngri;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class TwoActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.activity_two);
	            
	    mWebView = (WebView) findViewById(R.id.webview);
		// включаем поддержку JavaScript
	    mWebView.getSettings().setJavaScriptEnabled(true);
		// указываем страницу загрузки
	    mWebView.loadUrl("http://device-ne.ru"); 
	    mWebView.setWebViewClient(new HelloWebViewClient());
	}}
private class HelloWebViewClient extends WebViewClient 
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
		mWebView.goBack();
		return true;
	}
	return super.onKeyDown(keyCode, event);
}
Заранее спасибо!:)

NeoSvet
Сообщения: 11
Зарегистрирован: 19 авг 2013, 20:21

Re: Урок 32. Пишем простой браузер

Сообщение NeoSvet » 16 ноя 2013, 14:48

kefir_mbis писал(а):Застрял как понимаете на webview. по урокам получается создать микро браузер, который задает вопрос, через что открывать ссылку. Но мне требуется открывать страницы внутри WebView, без перехода к стандартному браузеру, ну и чтобы он делал это без вопросов.
Кажется так..)

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

package com.vbgroup.myneruyngri;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class TwoActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.activity_two);
	            
	    mWebView = (WebView) findViewById(R.id.webview);
		// включаем поддержку JavaScript
	    mWebView.getSettings().setJavaScriptEnabled(true);
		// указываем страницу загрузки
	    mWebView.loadUrl("http://device-ne.ru"); 
	    mWebView.setWebViewClient(new HelloWebViewClient());
}


private class HelloWebViewClient extends WebViewClient 
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
		mWebView.goBack();
		return true;
	}
	return super.onKeyDown(keyCode, event);
}

}

NeoSvet
Сообщения: 11
Зарегистрирован: 19 авг 2013, 20:21

Re: Урок 32. Пишем простой браузер

Сообщение NeoSvet » 16 ноя 2013, 14:55

Уже устал долбаться с этим OnTouch...

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

WebView wvBrowser;
...
wvBrowser.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
...
return false; //или true
}
});
В Android 4.0+ работает без проблем и с false, и с true.
А вот в 2.3...
Если с false, то код сработает только три раза... А если true, то перестает работать прокрутка.. и кнопки зума не появляются :( ...неужели, эти функции самому изобретать?..
Ту прокрутку, которую я сделал не имеет ускоренного режима..

NeoSvet
Сообщения: 11
Зарегистрирован: 19 авг 2013, 20:21

Re: Урок 32. Пишем простой браузер

Сообщение NeoSvet » 17 ноя 2013, 19:27

Сделал костыль )))) ..который, правда, работает немного иначе.. но, думаю, сойдет...)

Ой... OnTouch не работает как хотелось бы и в Android 4, если включены кнопки зума... :shock:

coolmarat
Сообщения: 6
Зарегистрирован: 20 ноя 2013, 11:31

Re: Урок 32. Пишем простой браузер

Сообщение coolmarat » 20 ноя 2013, 13:01

Ребята, подскажите, как мне с приложением сохранять html-страницы с рисунками и подставлять их в webview? Товарищ trew описал как страничку открывать, а как сделать, чтобы она цепляла и рисунки не разобрался...

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

Re: Урок 32. Пишем простой браузер

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

coolmarat писал(а):Ребята, подскажите, как мне с приложением сохранять html-страницы с рисунками и подставлять их в webview? Товарищ trew описал как страничку открывать, а как сделать, чтобы она цепляла и рисунки не разобрался...
пример
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

coolmarat
Сообщения: 6
Зарегистрирован: 20 ноя 2013, 11:31

Re: Урок 32. Пишем простой браузер

Сообщение coolmarat » 20 ноя 2013, 14:25

Trew, спасибо большое за ссылку!!!! Пытаюсь вникнуть. Пробую твой код из поста выше, раскомментировал строку, где
// webView.loadUrl("file:///android_asset/mypage.html");
пишет страница не доступна...
// webView.loadUrl("file:///android_asset/www/mypage.html");
тоже не доступна...

помоги пожалуйста. Расскажи, куда запихнуть мой html файлик, чтоб он подцепился браузером.

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

Re: Урок 32. Пишем простой браузер

Сообщение trew » 20 ноя 2013, 14:33

Папка assets, или папка assets/www для второго случая.
assets - она есть в любом проекте всегда.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

coolmarat
Сообщения: 6
Зарегистрирован: 20 ноя 2013, 11:31

Re: Урок 32. Пишем простой браузер

Сообщение coolmarat » 20 ноя 2013, 14:48

Trew, помоги выпрямить мои руки - скинь целиком проект, который бы отображал в assets встроенную страничку - совсем ничего не получается...

qwe
Сообщения: 10
Зарегистрирован: 04 ноя 2013, 23:29

Re: Урок 32. Пишем простой браузер

Сообщение qwe » 26 ноя 2013, 19:46

Необходимо не просто открыть страницу сайта, а пройти авторизацию (ввести логин и CAPTCHA). То есть приложение запрашивает логин а скрипт должен зайти на сайт, авторизоваться и отобразить страницу уже авторизованного пользователя. Подскажите где можно почитать про реализацию такого метода и не будет ли это очень сложно реализовать ?

Ответить