Страница 1 из 1

Фоновый поиск результатов в google и получение результатов

Добавлено: 11 июн 2014, 15:50
Yurets
Всем привет!
Ребят, подскажите, пожалуйста, нужно сделать фоновый поиск в гугл при нажатии кнопки "Поиск" (текст запроса берём из EditText) как его сделать? В какую сторону копать?
цель - по заданному запросу записать результаты поиска в БД в фоновом режиме...
заранее спасибо откликнувшимся!!

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 11 июн 2014, 15:56
altwin
https://developers.google.com/custom-search/
С Valley это очень просто отправляется запрос итак в background, в ответе приходит json, с которым можно делать, что угодно.

Но есть более классический путь:
[syntax=java5]
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
String keyword= "your query here";
intent.putExtra(SearchManager.QUERY, keyword);
startActivity(intent);
[/syntax]
или голосовой поиск:
[syntax=java5]
Intent sp=new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
sp.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
sp.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak please");
startActivity(sp);
[/syntax]
в общем в сети ответов полно. http://mobile.dzone.com/articles/androi ... ent-google | http://www.grokkingandroid.com/android- ... your-apps/

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 11 июн 2014, 17:08
Yurets
ну я по классическому пути и пошёл, вот только как вернуться обратно в предыдущее активити без каких-либо дополнительных нажатий и как json взять, вот этого не пойму...
получилось точно также, как Вы написали, но как с этим результатом вернуться домой не догоняю..

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

public void onClickHandler(View v){
    	try {
    	intent = new Intent(Intent.ACTION_WEB_SEARCH);
    	etText = etKeyWord.getText().toString();
    	intent.putExtra(SearchManager.QUERY, etText);
    	startActivity(intent);
    	} catch (Exception e) {
    		Log.d(LOG_TAG, "При попытке поиска произошла ошибка!");
    	}  	
}

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 11 июн 2014, 17:33
altwin
Yurets писал(а):ну я по классическому пути и пошёл, вот только как вернуться обратно в предыдущее активити без каких-либо дополнительных нажатий и как json взять, вот этого не пойму...
получилось точно также, как Вы написали, но как с этим результатом вернуться домой не догоняю..

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

public void onClickHandler(View v){
    	try {
    	intent = new Intent(Intent.ACTION_WEB_SEARCH);
    	etText = etKeyWord.getText().toString();
    	intent.putExtra(SearchManager.QUERY, etText);
    	startActivity(intent);
    	} catch (Exception e) {
    		Log.d(LOG_TAG, "При попытке поиска произошла ошибка!");
    	}  	
}
В данном случае открывается activity, я так не делал но на сколько понимаю - это простой web view в который переданы параметры запроса, и вы можете только видеть результат в том же view. Для того, чтобы получить результат в виде json (конкретнее тут: https://developers.google.com/custom-se ... using_rest)обычно нужно отправить запрос к сервису поддерживающему rest ахитектуру и это явно из другой оперы, тут вам и поможет первая ссылка. Там google описывает подробно, как получить json, ну а отправить запрос к указанным сервисам из andoid в background вам может помочь простенкая библиотека - http://habrahabr.ru/post/188860/

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 11 июн 2014, 17:55
Yurets
Ну да, вот классическим способом я примерно прикидываю как это сделать, но это как-то глуповато немного...
а за Volley спасибо. Действительно то, что надо. Сейчас буду разбирать.
Спасибо! :-)

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 11 июн 2014, 18:42
Yurets
Вдруг кому-то понадобится - подробное описание по Volley на русском

http://android-developerden.blogspot.co ... oogle.html

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 12 июн 2014, 13:57
Yurets
Всё к этой же теме, но теперь по части Volley, кто сталкивался - не будьте безразличны)
при нажатии кнопки делается поиск в гугле по уже закодированному формату (проверил, всё делается правильно)
мне нужно получить первый результат поиска либо Json (искомое слово-значение) либо string (значение)...
Выдаёт BasicNetwork.performRequest: Unexpected response code 405 for hhtp://www.google.ru/#q=%бла%бла&бла%
и соответственно сразу кидает в блок onErrorResponse...
Ощибка пропадает, если использовать GET вместо POST, но как же всё-таки "взять" первый результат?

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

private RequestQueue queue = null;
JsonObjectRequest jsObjRequest;

public void onClick(View v) {
            queue = Volley.newRequestQueue(this);
   	    jsObjRequest = new JsonObjectRequest(Request.Method.POST, url  + Uri.encode(etKeyWord.getText().toString()), null, new Response.Listener<JSONObject>() {

    		  @Override
    		  public void onResponse(JSONObject response) {
    		   Log.d(LOG_TAG,"Response => "+response.toString());
    		  }
    		 }, new Response.ErrorListener() {

    		  @Override
    		  public void onErrorResponse(VolleyError error) {
    			  Log.d(LOG_TAG, "Ошибка запроса!");
    		  }
    		 });
    	
    	queue.add(jsObjRequest);
	}

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 12 июн 2014, 18:07
altwin

Re: Фоновый поиск результатов в google и получение результат

Добавлено: 12 июн 2014, 19:10
Yurets

Похоже на правду!
Спасибо огромное, не представляете как помогли!!!