Handle IM entries with missing protocol field.

Fix bc_triaged bug http://b/issue?id=2174637
Dr. No approval from Tim Sullivan

Change-Id: Ia91c39e91a54e3c58ec94d1c5064a9572519f036
diff --git a/src/com/android/contacts/ContactsUtils.java b/src/com/android/contacts/ContactsUtils.java
index 25da482..5f003de 100644
--- a/src/com/android/contacts/ContactsUtils.java
+++ b/src/com/android/contacts/ContactsUtils.java
@@ -229,6 +229,11 @@
      */
     public static Intent buildImIntent(ContentValues values) {
         final boolean isEmail = Email.CONTENT_ITEM_TYPE.equals(values.getAsString(Data.MIMETYPE));
+
+        if (!isEmail && !isProtocolValid(values)) {
+            return null;
+        }
+
         final int protocol = isEmail ? Im.PROTOCOL_GOOGLE_TALK : values.getAsInteger(Im.PROTOCOL);
 
         String host = values.getAsString(Im.CUSTOM_PROTOCOL);
@@ -248,6 +253,19 @@
         }
     }
 
+    private static boolean isProtocolValid(ContentValues values) {
+        String protocolString = values.getAsString(Im.PROTOCOL);
+        if (protocolString == null) {
+            return false;
+        }
+        try {
+            Integer.valueOf(protocolString);
+        } catch (NumberFormatException e) {
+            return false;
+        }
+        return true;
+    }
+
     public static Intent getPhotoPickIntent() {
         Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
         intent.setType("image/*");