Страница 1 из 2
Автозаполнение формы
Добавлено: 21 янв 2014, 16:54
gennc
Всем привет, есть форма на странице,
Код: Выделить всё
<form name="forma1">
<input type="text" name="login" size="20"
maxlength="50" value="Логин">
<input type="text" name="pass" size="20"
maxlength="50" value="Пароль">
Выбирите число от 1 до 3:
<select name="language" size="1">
<option selected value="1">1
<option value="2">2
<option value="3">3
</select><br><br>
<input type="button" name="button" value="Отправить">
</form>
Подскажите пожалуйста, как заставить Java код в eclipse, заполнить поля. Там где логин - Vasia, пароль - 111111 и выбрать число 2. В C# есть строчка webBrowser1.Document.GetElementById("Login").SetAttribute("value", "Vasia"); Но она не работает в eclipse
Re: Автозаполнение формы
Добавлено: 22 янв 2014, 11:00
altwin
webBrowser1.Document.GetElementById("Login").SetAttribute("value", "Vasia");
к C# не имеет никакого отношения вообще. И что этот вопрос делает в форуе Android разработчиков ?
P.S. вы перепутали Java и JavaScript (код которого кстати тут привели).
Подскажите пожалуйста, как заставить Java код в eclipse, заполнить поля
при чем тут java и зачем оно вам?
Re: Автозаполнение формы
Добавлено: 22 янв 2014, 14:24
gennc
altwin - так а на чем пишется android?
Re: Автозаполнение формы
Добавлено: 22 янв 2014, 14:44
rezak90
gennc, почитай про get и post запросы
Re: Автозаполнение формы
Добавлено: 11 фев 2014, 21:19
gennc
Проблему я так и не решил(
Помогите пожалуйста. Перепробовал уже все что можно, но не хочет заполнять форму.
Вот на многих сайтах находил вот такой код(скинул весь код), и писали что работает, но у меня не хочет и не как не могу заставить его заполнять.
Код: Выделить всё
package com.example.Climail;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.*;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import android.webkit.WebSettings;
@SuppressLint("SetJavaScriptEnabled")
public class LoginActivity extends Activity {
WebView webView;
//@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.weblogin);
WebView WebView;
WebView = (WebView) findViewById(R.id.webView1);
WebView.setWebViewClient(new WebViewClient());
WebSettings settings = WebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
WebView.loadUrl("http://m.mail.ru/login/");
//String uname = "cristian";
//String password = "777";
WebView.loadUrl("javascript:document.getElementById('Login').value = '"+username+"';");
WebView.loadUrl("javascript:document.getElementById('Login').SetAttribute('value', 'cristian')");
WebView.loadUrl("javascript:Document.GetElementById('Password').SetAttribute('value', '777')");
WebView.loadUrl("javascript:document.getElementById('Войти').click();");
}
}
Re: Автозаполнение формы
Добавлено: 11 фев 2014, 21:28
Mikhail_dev
Хехех, не заполняется потому что падает мертвым грузом?
Re: Автозаполнение формы
Добавлено: 11 фев 2014, 21:31
gennc
m090050 - неа, загружается м.маил и больше ничего не происходит((
Приложение не падает, если я вас правильно понял.
Re: Автозаполнение формы
Добавлено: 11 фев 2014, 22:55
Mikhail_dev
Да, правильно. Просто идет обращение к интернету с главного (UI) потока, а это запрещено Андроидом. До 3-го андроида это работает, а выше третьего уже не будет.
Re: Автозаполнение формы
Добавлено: 11 фев 2014, 23:44
gennc
m090050 - ну это совет на будущее, записал его, спасибо.
Но мне бы сейчас с этим авто заполнением бы разобраться(
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 06:47
Foenix
gennc писал(а):m090050 - ну это совет на будущее, записал его, спасибо.
Но мне бы сейчас с этим авто заполнением бы разобраться(
значит, и "будущего" у этого кода нет.
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 10:49
gennc
Foenix - Добрый день. Ну почему сразу такие высказывания, m090050 написал что до 3-го андройда, у меня сейчас стоит версия 2.3.3 на эмуляторе, мне и этой версии достаточно или вы предлагаете учить андройд сразу с 4.4?)
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 10:59
Mikhail_dev
Потому что на 2.3.3 свет не замкнулся. Посмотрите гугловскую статистику по версиям, (
http://developer.android.com/about/dash ... sdroid.net ), вы таким кодом отсеяли 80 процентов рынка.
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:16
gennc
m090050 - если я не разберусь с авто заполнением, то о рынке и говорить сложно будет. Да и это больше для себя хочу сделать, так как мне это нравится. Мне не нужно чтобы за меня делали все приложение, хотя я мало в этом уверен, что кто-то и захочет. Можете просто натолкнуть как это сделать.
На счет UI, нашел
http://startandroid.ru/ru/uroki/vse-uro ... otoke.html, то?
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:22
altwin
Если вы создаете приложение работающее как web app, используйте jQuery:
http://jqueryui.com/autocomplete/ (полезно почитать:
http://mobile.smashingmagazine.com/2011 ... -steroids/ ), так же можно поступить если вы просто используете WebView в activity работающей с формой, просто разрешив js и подключив плагин.
Если же это "нативная" форма, просто вместо EditText field используйте
AutoCompleteTextView
P.S. я до сих пор не понял вопроса, что за автозаполнение в Android вам нужно? Можете привести пример или описать шаги работы? Это auto complete или же просто установка значения по умолчанию, а может вы собираетесь заполнять форму исходя из данных о пользователе и его действиях?
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:33
gennc
altwin - Если так подумать получается что это клиент. В коде программно я вписываю например логин и пароль
Код: Выделить всё
String uname = "cristian";
String password = "777";
И когда я нажимаю на программу, она запускается, открывает страницу
http://m.mail.ru/login/, водит сама в поле Имя - cristian, в поле Пароль - 777 и нажимает кнопку Войти. При этом я ничего не делаю, ничего не ввожу, все делается автоматически. Я только запустил саму программу.
Разрешение на js, я даю ей settings.setJavaScriptEnabled(true);
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:36
altwin
А я могу true c false в php поменять и на 0 делить используя 7 языков программирования и че? То, что это можно сделать, не значит, что это делать нужно... То, что есть способы выполнить код в UI потоке не значит, что такой код поможет вам найти работу...
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:38
altwin
gennc писал(а):altwin - Если так подумать получается что это клиент. В коде программно я вписываю например логин и пароль
Код: Выделить всё
String uname = "cristian";
String password = "777";
И когда я нажимаю на программу, она запускается, открывает страницу
http://m.mail.ru/login/, водит сама в поле Имя - cristian, в поле Пароль - 777 и нажимает кнопку Войти. При этом я ничего не делаю, ничего не ввожу, все делается автоматически. Я только запустил саму программу.
Разрешение на js, я даю ей settings.setJavaScriptEnabled(true);
вам не автозаполнение нужно, оно тут вообще не тем боком стало...
Первое - не делайте так никогда. Вы понимаете, что сохраняя пароли в коде вы убиваете безопастность вообще в 0.
Но даже если вы захотели... из каких то переменнных окружения вытащили значения ... вам нужно просто отправить логин и пароль серверу. Но опять же зачем тогда вообще авторизация?
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:40
altwin
вот библиотека, для отправки асинхронных запросов, вы можете добавить любой параметр к запросу(в вашем случае логин и пароль), все.. больше ничего не нужно:
http://loopj.com/android-async-http/ Там даже аутентификация уже поддерживается, т.е.:
[syntax=java5]
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password/token");
client.get("
http://example.com");
[/syntax]
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:45
gennc
altwin - нет, мне нужно именно как я описал, отправлять запрос на прямую мн не нужно.
Re: Автозаполнение формы
Добавлено: 12 фев 2014, 11:51
altwin
gennc писал(а):altwin - нет, мне нужно именно как я описал, отправлять запрос на прямую мн не нужно.
чем это отличается от того, что вы описываете? Вам нужно в код примера который я вам привел добавить вместо
"username","password/token" свои
String uname = "cristian"; и String password = "777";, в чем отличия то? Если вы хотите чтобы это можно было отправлят из формы используйте АutoCompleteTextView значения из которой присваивайте своеим переменным. Да что угодно можно делать, что значит запрос на прямую не нужно? По сути этот код отправляет уже защищенный запрос на
http://example.com?username=user_name&u ... =user_pass других варриантов нет. То же самое вы можете сделать в doInBackground AsyncTask -а просто выполнив сам запрос, но опять таки вы не защищены от декомпиляции или просто перехвата пакета.