Loading res/drawable-finger/sym_action_navi.png 0 → 100644 +257 B Loading image diff... src/com/android/contacts/ViewContactActivity.java +40 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,7 @@ public class ViewContactActivity extends ListActivity /* package */ ArrayList<ViewEntry> mSmsEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mEmailEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mPostalEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mNavigationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mImEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOrganizationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOtherEntries = new ArrayList<ViewEntry>(); Loading Loading @@ -254,6 +255,7 @@ public class ViewContactActivity extends ListActivity mSections.add(mEmailEntries); mSections.add(mImEntries); mSections.add(mPostalEntries); mSections.add(mNavigationEntries); mSections.add(mOrganizationEntries); mSections.add(mOtherEntries); Loading Loading @@ -865,6 +867,18 @@ public class ViewContactActivity extends ListActivity entry.intent = new Intent(Intent.ACTION_VIEW, uri); entry.actionIcon = R.drawable.sym_action_map; mPostalEntries.add(entry); ViewEntry navEntry = new ViewEntry(); navEntry.label = buildActionString(R.string.actionNav, ContactMethods.getDisplayLabel(this, kind, type, label), true); navEntry.data = data; navEntry.maxLines = 4; navEntry.actionIcon = R.drawable.sym_action_navi; Intent i = startNavigation(data); if (i != null) { navEntry.intent = i; mNavigationEntries.add(navEntry); } break; case Contacts.KIND_IM: { Loading Loading @@ -1191,4 +1205,30 @@ public class ViewContactActivity extends ListActivity } } } public boolean isIntentAvailable(Intent intent) { final PackageManager packageManager = this.getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } public Intent startNavigation(String address) { address = address.replace('#', ' '); Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setData(Uri.parse("http://maps.google.com/maps?myl=saddr&daddr=" + address + "&dirflg=d&nav=1")); i.addFlags(0x10800000); i.setClassName("com.google.android.apps.m4ps", "com.google.android.maps.driveabout.app.NavigationActivity"); if (isIntentAvailable(i)) { return i; } else { i.setClassName("com.google.android.apps.maps", "com.google.android.maps.driveabout.app.NavigationActivity"); if (isIntentAvailable(i)) { return i; } else { return null; } } } } Loading
src/com/android/contacts/ViewContactActivity.java +40 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,7 @@ public class ViewContactActivity extends ListActivity /* package */ ArrayList<ViewEntry> mSmsEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mEmailEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mPostalEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mNavigationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mImEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOrganizationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOtherEntries = new ArrayList<ViewEntry>(); Loading Loading @@ -254,6 +255,7 @@ public class ViewContactActivity extends ListActivity mSections.add(mEmailEntries); mSections.add(mImEntries); mSections.add(mPostalEntries); mSections.add(mNavigationEntries); mSections.add(mOrganizationEntries); mSections.add(mOtherEntries); Loading Loading @@ -865,6 +867,18 @@ public class ViewContactActivity extends ListActivity entry.intent = new Intent(Intent.ACTION_VIEW, uri); entry.actionIcon = R.drawable.sym_action_map; mPostalEntries.add(entry); ViewEntry navEntry = new ViewEntry(); navEntry.label = buildActionString(R.string.actionNav, ContactMethods.getDisplayLabel(this, kind, type, label), true); navEntry.data = data; navEntry.maxLines = 4; navEntry.actionIcon = R.drawable.sym_action_navi; Intent i = startNavigation(data); if (i != null) { navEntry.intent = i; mNavigationEntries.add(navEntry); } break; case Contacts.KIND_IM: { Loading Loading @@ -1191,4 +1205,30 @@ public class ViewContactActivity extends ListActivity } } } public boolean isIntentAvailable(Intent intent) { final PackageManager packageManager = this.getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } public Intent startNavigation(String address) { address = address.replace('#', ' '); Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setData(Uri.parse("http://maps.google.com/maps?myl=saddr&daddr=" + address + "&dirflg=d&nav=1")); i.addFlags(0x10800000); i.setClassName("com.google.android.apps.m4ps", "com.google.android.maps.driveabout.app.NavigationActivity"); if (isIntentAvailable(i)) { return i; } else { i.setClassName("com.google.android.apps.maps", "com.google.android.maps.driveabout.app.NavigationActivity"); if (isIntentAvailable(i)) { return i; } else { return null; } } } }