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

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

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

Сообщение trew » 26 ноя 2013, 19:52

qwe писал(а):Необходимо не просто открыть страницу сайта, а пройти авторизацию (ввести логин и CAPTCHA). То есть приложение запрашивает логин а скрипт должен зайти на сайт, авторизоваться и отобразить страницу уже авторизованного пользователя. Подскажите где можно почитать про реализацию такого метода и не будет ли это очень сложно реализовать ?
Как вы думаете зачем придумали CAPTCHA ?
И как вы собираетесь после этого авторизоваться?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

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

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

Сообщение qwe » 26 ноя 2013, 20:21

Как вы думаете зачем придумали CAPTCHA ?
Для того, чтобы определять, кем является пользователь системы: человек или компьютер.
И как вы собираетесь после этого авторизоваться?
Я думаю, что существует по меньшей мере несколько способов прохождения капчи ( различные программы (например, PWNtcha)).
Например, есть приложения по отслеживанию посылок, по трек номеру там тоже необходимо знать трек номер и вводить капча. Я не знаю как там реализована эта возможность но думаю смысл тот же.

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

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

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

Универсальных систем распознавания каптч не существует. Поэтому,
Вам нужна помощь из Индии.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Seldom
Сообщения: 6
Зарегистрирован: 29 дек 2013, 16:21

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

Сообщение Seldom » 29 дек 2013, 16:25

Бодрого дня!
Подскажите как сделать браузер не на весь экран?
чтобы, к примеру, вверху экрана были координаты и др. информация, а в нижней части небольшое окошко с картой гугла.

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

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

Сообщение NeoSvet » 29 дек 2013, 18:12

Seldom писал(а):Подскажите как сделать браузер не на весь экран?
Аналогично как и другие элементы - в файле разметки (\res\layout) задать конкретные размеры:

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

<WebView
    android:id="@+id/wvBrowser"
    android:layout_width="200dp"
    android:layout_height="200dp" >
</WebView>

TittTitov
Сообщения: 27
Зарегистрирован: 20 ноя 2013, 22:46

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

Сообщение TittTitov » 07 янв 2014, 17:27

Доброго времени суток!

В общем, я в качестве упражнения, немного дополнил (из тех знаний что уже есть) приложение к этому уроку, добавил несколько кнопок-ссылок на сайты, всплывающие сообщения и др. Но вот возникла проблема.
Среди прочего, я добавил поле ввода EditText ну и кнопку GO к ней. И когда ввожу адрес правильно - то всё в порядке, страница открывается, но когда запись адреса неточна - приложение вылетает с ошибкой. Как можно сделать проверку правильности записи адреса?

И ещё вопрос - есть ли Input Tipe для EditText, который был бы "заточен" под ввод веб-адреса?
Спасибо!

Мой код кнопки GO:
Поле ввода.PNG
Поле ввода.PNG (6.92 КБ) 17533 просмотра

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

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

Сообщение altwin » 07 янв 2014, 17:59

NeoSvet писал(а):
Seldom писал(а):Подскажите как сделать браузер не на весь экран?
Аналогично как и другие элементы - в файле разметки (\res\layout) задать конкретные размеры:

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

<WebView
    android:id="@+id/wvBrowser"
    android:layout_width="200dp"
    android:layout_height="200dp" >
</WebView>
для этого используется свойство - match_parent, указывать тут числа бесполезно, поскольку экраны разные...
Изображение

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

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

Сообщение altwin » 07 янв 2014, 18:04

TittTitov писал(а): И ещё вопрос - есть ли Input Tipe для EditText, который был бы "заточен" под ввод веб-адреса?
нужно создать свой Input Method c типом TYPE_TEXT_VARIATION_URI
Как можно сделать проверку правильности записи адреса?
Сохранять url в объект URL вместо String?
Изображение

Novichok
Сообщения: 3
Зарегистрирован: 02 янв 2014, 15:31

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

Сообщение Novichok » 19 янв 2014, 12:35

Подскажите пожалуйста вместо ya.ru вставил ссылку на свой сайт теперь он начинает просить родной браузер!

Novichok
Сообщения: 3
Зарегистрирован: 02 янв 2014, 15:31

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

Сообщение Novichok » 19 янв 2014, 14:56

]омогите пожалуйста вот код маин акитивити! две проблемы button2 должен выводить на другой экран к нему layout two уже создан он не выводит установил а там просто кнопка нет никаких действий и вторая проблема на уроке 32 написал простой браузер эта button1 тк вот вставил ссылку на свой сайт когда нажимаю на кнопку сначала просит выбрать браузеры там есть мой созданный выбираю его затем пустой экран и опять просит выбрать но моего уже в списке нет! Заранее спасибо.

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

package com.example.cc;

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;
import android.widget.Button;

public class MainActivity extends Activity {
	Button button2;

	  /** Called when the activity is first created. */
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);

	    button2 = (Button) findViewById(R.id.button2);
	    button2.setOnClickListener((OnClickListener) this);
	  }

	  public void onClick(View v) {
	    switch (v.getId()) {
	    case R.id.button2:
	    	   Intent intent = new Intent(this, TwoActivity.class);
	    	      startActivity(intent);
	      // TODO Call second activity
	      break;
	    default:
	      break;
	    }
	  }
	  
	/** Called when the activity is first created. */
	  
	  public void onCreate1(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);
	    

	    (findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
	        @Override
	        public void onClick(View v) {
	          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mysite.ru")));
	        }
	      });
	    }
	  }
Последний раз редактировалось Novichok 19 янв 2014, 19:26, всего редактировалось 2 раза.

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

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

Сообщение Foenix » 19 янв 2014, 16:22

никто не будет вглядываться в такой код и мысленно расставлять инденты. Форматируй.
R.id.team

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

Seldom
Сообщения: 6
Зарегистрирован: 29 дек 2013, 16:21

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

Сообщение Seldom » 29 янв 2014, 11:55

Всем привет!
из-за невнимательности пропускал в уроках "Build Target: Android 2.3.3"... в итоге что-то работало что-то нет.....
глобальный вопрос: то что работает на API8 не хочет работать на API15 - это я виноват? или что-то более серьезное еще не допонял?
к примеру:

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

URL rssUrl = new URL("http://baobab.bab/index.xml");
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
            XMLReader xmlReader = saxParser.getXMLReader();
            RSSHandler rssHandler = new RSSHandler();
            xmlReader.setContentHandler(rssHandler);
            InputSource inputSource = new InputSource(rssUrl.openStream());
            xmlReader.parse(inputSource);
если API 15 - спотыкается на - InputSource inputSource = new InputSource(rssUrl.openStream());
если API 8 - все отлично...

где можно почитать?.... желательно на русском :oops:

.... смеркалось....

убрал упоминания о sdk из манифеста оставив только

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

<uses-sdk/>
в project.properties вписано -

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

# Project target.
target=android-16
все работает..... чёт совсем запутался.....

Seldom
Сообщения: 6
Зарегистрирован: 29 дек 2013, 16:21

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

Сообщение Seldom » 30 янв 2014, 19:47

ау! есть кто-нибудь?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 31 янв 2014, 05:46

Seldom писал(а):ау! есть кто-нибудь?
на будущее прилагайте еще лог ошибки.
как я понимаю тут вполне обычный NetworkOnMainThreadException (название говорящее)
на старых api можно было обращаться к сети из главного потока, на новых нельзя.

пример решения http://stackoverflow.com/questions/6343 ... dexception

Seldom
Сообщения: 6
Зарегистрирован: 29 дек 2013, 16:21

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

Сообщение Seldom » 31 янв 2014, 20:39

Ура!!!!! Заработало!!! Спасибо огромное!!!

Nemoi
Сообщения: 3
Зарегистрирован: 16 фев 2014, 15:00

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

Сообщение Nemoi » 20 фев 2014, 13:49

Подскажите можно ли в mainactivity совмсестить явный вызов интетнт из класса в методе (StartActivityResult) и парсинг Ури из ?
Пытаюсь добавить в браузер активити в который будем вводить URL (CatchUrl.class) , парсить его при помощи Uri и отправлять в editTextБраузера , вот мой код и лог ошибок( Приложение при запуске вылитает)

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

public void onClick(View v){
		String MyUrl;
		if(TextUtils.isEmpty(editUrl.getText().toString())){
			Toast.makeText(this, "Put in", 0).show();
			return;
		}
		switch (v.getId()) {
		case R.id.btnWeb :
		startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.ya.ru")));
		break;
		case R.id.srch:
			try {
			MyUrl = new String(editUrl.getText().toString());
			Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(MyUrl));
			startActivity(intent); 
			}catch (Exception ex) {
				Toast.makeText(this,"dont load", 0).show();
				}
			break;
		case R.id.clear:
				editUrl.setText(" ");
				break;
		
		case R.id.goTo:
			Intent intent1=new Intent(this,GetUrl.class); 
				startActivityForResult(intent1,1);
				break; }
				
		}
		
		protected void OnActivityReslut(int requestCode, int resultCode, Intent data) {
			if (data==null){return;}
			String geturll=data.getStringExtra("geturll");
			eddText.setText("Your url is" +geturll);
			}
}

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

02-20 11:27:56.792: E/AndroidRuntime(539): FATAL EXCEPTION: main
02-20 11:27:56.792: E/AndroidRuntime(539): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.p0321_browser/com.example.p0321_browser.MainActivity}: java.lang.ClassCastException: android.widget.TextView
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.os.Looper.loop(Looper.java:130)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at java.lang.reflect.Method.invokeNative(Native Method)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at java.lang.reflect.Method.invoke(Method.java:507)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at dalvik.system.NativeStart.main(Native Method)
02-20 11:27:56.792: E/AndroidRuntime(539): Caused by: java.lang.ClassCastException: android.widget.TextView
02-20 11:27:56.792: E/AndroidRuntime(539): 	at com.example.p0321_browser.MainActivity.onCreate(MainActivity.java:36)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-20 11:27:56.792: E/AndroidRuntime(539): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-20 11:27:56.792: E/AndroidRuntime(539): 	... 11 more

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 21 фев 2014, 06:36

Nemoi писал(а):

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

02-20 11:27:56.792: E/AndroidRuntime(539): Caused by: java.lang.ClassCastException: android.widget.TextView
02-20 11:27:56.792: E/AndroidRuntime(539): 	at com.example.p0321_browser.MainActivity.onCreate(MainActivity.java:36)
Падает в onCreate, а показываете метод onClick

Den Brown
Сообщения: 2
Зарегистрирован: 28 фев 2014, 20:50

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

Сообщение Den Brown » 28 фев 2014, 20:58

Дошел до 32 урока, и впервые возникла "нештатная" ситуация.

Все сделал как описано в уроке, при нажати на кнопке возникает выбор из браузеров и моего второго активити.

Но если выбрать мое активити, то окно выбора появляется вновь и предлает уже только браузеры. Если это окно отклонить (кликнуть вне окна выбора) то появляется пустое второе активити.

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

Спасибо

inumo
Сообщения: 3
Зарегистрирован: 28 мар 2014, 01:48

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

Сообщение inumo » 28 мар 2014, 02:02

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


Спасибо за подсказку.

sergeymild
Сообщения: 2
Зарегистрирован: 12 июл 2014, 21:51

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

Сообщение sergeymild » 12 июл 2014, 22:04

Есть вопрос по webView бьюсь уже неделю не пойму как сделать, есть сервер который отдает api в виде json строки с html содержимым, там есть текст, ссылки, изображения, видео. Как сделать чтобы при клике на изображение оно открывалось в новом activity или fragmente для полного отображения пример как в приложении Tjournal при клике на изображение в новости оно открывается в новом активити? и такой же вопрос по видео уже не знаю что и делать совсем руки опускаются. перепробовал все и в интернете нет нормальных ответов на это.

Ответить