QuickContact: Use "geo:" URI to open postal addresses
Use VIEW + "geo:0,0?q=ADDRESS" intent when opening postal addresses.
Which is what we do on contact card.
Bug 5388769
Change-Id: I2b960b7378ae4bedee27a72022d9fa41c9e8dfad
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index f3f8e8a..767d366 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -39,6 +39,7 @@
import com.android.contacts.util.Constants;
import com.android.contacts.util.DataStatus;
import com.android.contacts.util.DateUtils;
+import com.android.contacts.util.StructuredPostalUtils;
import com.android.contacts.util.PhoneCapabilityTester;
import com.android.contacts.widget.TransitionAnimationView;
import com.android.internal.telephony.ITelephony;
@@ -634,8 +635,7 @@
} else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
// Build postal entries
entry.maxLines = POSTAL_ADDRESS_MAX_LINES;
- entry.intent = new Intent(
- Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + Uri.encode(entry.data)));
+ entry.intent = StructuredPostalUtils.getViewPostalAddressIntent(entry.data);
mPostalEntries.add(entry);
} else if (Im.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
// Build IM entries
diff --git a/src/com/android/contacts/quickcontact/DataAction.java b/src/com/android/contacts/quickcontact/DataAction.java
index 88b3843..84a34bd 100644
--- a/src/com/android/contacts/quickcontact/DataAction.java
+++ b/src/com/android/contacts/quickcontact/DataAction.java
@@ -21,6 +21,7 @@
import com.android.contacts.model.AccountType.EditType;
import com.android.contacts.model.DataKind;
import com.android.contacts.util.Constants;
+import com.android.contacts.util.StructuredPostalUtils;
import com.android.contacts.util.PhoneCapabilityTester;
import android.content.ContentUris;
@@ -35,6 +36,7 @@
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.SipAddress;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.provider.ContactsContract.Data;
import android.text.TextUtils;
@@ -202,6 +204,11 @@
}
}
}
+ } else if (StructuredPostal.CONTENT_ITEM_TYPE.equals(mimeType)) {
+ final String postalAddress = getAsString(cursor, StructuredPostal.FORMATTED_ADDRESS);
+ if (!TextUtils.isEmpty(postalAddress)) {
+ mIntent = StructuredPostalUtils.getViewPostalAddressIntent(postalAddress);
+ }
}
if (mIntent == null) {
diff --git a/src/com/android/contacts/util/StructuredPostalUtils.java b/src/com/android/contacts/util/StructuredPostalUtils.java
new file mode 100644
index 0000000..59d38ea
--- /dev/null
+++ b/src/com/android/contacts/util/StructuredPostalUtils.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.util;
+
+import android.content.Intent;
+import android.net.Uri;
+
+public class StructuredPostalUtils {
+ private StructuredPostalUtils() {
+ }
+
+ public static Intent getViewPostalAddressIntent(String postalAddress) {
+ return new Intent(Intent.ACTION_VIEW, getPostalAddressUri(postalAddress));
+ }
+
+ public static Uri getPostalAddressUri(String postalAddress) {
+ return Uri.parse("geo:0,0?q=" + Uri.encode(postalAddress));
+ }
+}