From dd25ef7b3a78d15d278fd1b1fa8477df00a8fbdf Mon Sep 17 00:00:00 2001 From: dswitkin Date: Thu, 23 Oct 2008 18:34:35 +0000 Subject: [PATCH] Added support for a title when searching for an address, for example a business name. Also changed snipppets --> snippet in book search. git-svn-id: http://zxing.googlecode.com/svn/trunk@635 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- android/res/values/strings.xml | 2 +- .../android/result/AddressBookResultHandler.java | 4 +++- .../client/android/result/ResultHandler.java | 16 ++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 2723535f..b5745124 100755 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -64,7 +64,7 @@ Sorry, the search encountered a problem. No page returned Page - Snippets not available + Snippet not available Unknown page Searching book\u2026 Here\'s the contents of a barcode I scanned diff --git a/android/src/com/google/zxing/client/android/result/AddressBookResultHandler.java b/android/src/com/google/zxing/client/android/result/AddressBookResultHandler.java index 64a07091..e5833184 100644 --- a/android/src/com/google/zxing/client/android/result/AddressBookResultHandler.java +++ b/android/src/com/google/zxing/client/android/result/AddressBookResultHandler.java @@ -100,7 +100,9 @@ public class AddressBookResultHandler extends ResultHandler { addressResult.getTitle()); break; case 1: - searchMap(addressResult.getAddress()); + String[] names = addressResult.getNames(); + String title = names != null ? names[0] : null; + searchMap(addressResult.getAddress(), title); break; case 2: dialPhone(addressResult.getPhoneNumbers()[0]); diff --git a/android/src/com/google/zxing/client/android/result/ResultHandler.java b/android/src/com/google/zxing/client/android/result/ResultHandler.java index 0f8c5038..bc285216 100644 --- a/android/src/com/google/zxing/client/android/result/ResultHandler.java +++ b/android/src/com/google/zxing/client/android/result/ResultHandler.java @@ -207,8 +207,18 @@ public abstract class ResultHandler { launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(geoURI))); } - public void searchMap(String address) { - launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + Uri.encode(address)))); + /** + * Do a geo search using the address as the query. + * + * @param address The address to find + * @param title An optional title, e.g. the name of the business at this address + */ + public void searchMap(String address, String title) { + String query = address; + if (title != null && title.length() > 0) { + query = query + " (" + title + ")"; + } + launchIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + Uri.encode(query)))); } public void getDirections(float latitude, float longitude) { @@ -255,6 +265,8 @@ public abstract class ResultHandler { } } + // TODO: The current Contacts Intent API can only accept one value for each field, so we pick the + // first element in the array for names, phone numbers, and emails. It would be great to fix this. private static void putExtra(Intent intent, String key, String[] value) { if (value != null && value.length > 0) { putExtra(intent, key, value[0]); -- 2.20.1