@Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { if (position < 1) { // Clicked header, ignore it return; } int itemOffset = position - 1; if (itemOffset >= items.size()) { return; } String pageId = items.get(itemOffset).getPageId(); String query = SearchBookContentsResult.getQuery(); if (LocaleManager.isBookSearchUrl(activity.getISBN()) && !pageId.isEmpty()) { String uri = activity.getISBN(); int equals = uri.indexOf('='); String volumeId = uri.substring(equals + 1); String readBookURI = "http://books.google." + LocaleManager.getBookSearchCountryTLD(activity) + "/books?id=" + volumeId + "&pg=" + pageId + "&vq=" + query; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(readBookURI)); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); activity.startActivity(intent); } }
@Override protected JSONObject doInBackground(String... args) { try { // These return a JSON result which describes if and where the query was found. This API may // break or disappear at any time in the future. Since this is an API call rather than a // website, we don't use LocaleManager to change the TLD. String theQuery = args[0]; String theIsbn = args[1]; String uri; if (LocaleManager.isBookSearchUrl(theIsbn)) { int equals = theIsbn.indexOf('='); String volumeId = theIsbn.substring(equals + 1); uri = "http://www.google.com/books?id=" + volumeId + "&jscmd=SearchWithinVolume2&q=" + theQuery; } else { uri = "http://www.google.com/books?vid=isbn" + theIsbn + "&jscmd=SearchWithinVolume2&q=" + theQuery; } CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.JSON); return new JSONObject(content.toString()); } catch (IOException ioe) { Log.w(TAG, "Error accessing book search", ioe); return null; } catch (JSONException je) { Log.w(TAG, "Error accessing book search", je); return null; } }
@Override void retrieveSupplementalInfo() throws IOException { String encodedProductID = URLEncoder.encode(productID, "UTF-8"); String uri = "https://www.google." + LocaleManager.getProductSearchCountryTLD(context) + "/m/products?ie=utf8&oe=utf8&scoring=p&source=zxing&q=" + encodedProductID; CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.HTML); for (Pattern p : PRODUCT_NAME_PRICE_PATTERNS) { Matcher matcher = p.matcher(content); if (matcher.find()) { append(productID, source, new String[] { unescapeHTML(matcher.group(1)), unescapeHTML(matcher.group(2)) }, uri); break; } } }
@Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { if (position < 1) { // Clicked header, ignore it return; } int itemOffset = position - 1; if (itemOffset >= items.size()) { return; } String pageId = items.get(itemOffset).getPageId(); String query = SearchBookContentsResult.getQuery(); if (LocaleManager.isBookSearchUrl(activity.getISBN()) && pageId.length() > 0) { String uri = activity.getISBN(); int equals = uri.indexOf('='); String volumeId = uri.substring(equals + 1); String readBookURI = "http://books.google." + LocaleManager.getBookSearchCountryTLD(activity) + "/books?id=" + volumeId + "&pg=" + pageId + "&vq=" + query; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(readBookURI)); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); activity.startActivity(intent); } }
@Override void retrieveSupplementalInfo() throws IOException { String encodedProductID = URLEncoder.encode(productID, "UTF-8"); String uri = "http://www.google." + LocaleManager.getProductSearchCountryTLD(context) + "/m/products?ie=utf8&oe=utf8&scoring=p&source=zxing&q=" + encodedProductID; CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.HTML); for (Pattern p : PRODUCT_NAME_PRICE_PATTERNS) { Matcher matcher = p.matcher(content); if (matcher.find()) { append(productID, source, new String[] { unescapeHTML(matcher.group(1)), unescapeHTML(matcher.group(2)) }, uri); break; } } }
@Override void retrieveSupplementalInfo() throws IOException { String encodedProductID = URLEncoder.encode(productID, "UTF-8"); String uri = "http://www.google." + LocaleManager.getProductSearchCountryTLD(context) + "/m/products?ie=utf8&oe=utf8&scoring=p&source=zxing&q=" + encodedProductID; CharSequence content = HttpHelper.downloadViaHttp(uri, HttpHelper.ContentType.HTML); for (Pattern p : PRODUCT_NAME_PRICE_PATTERNS) { Matcher matcher = p.matcher(content); if (matcher.find()) { append(productID, source, new String[]{unescapeHTML(matcher.group(1)), unescapeHTML(matcher.group(2))}, uri); break; } } }