The reason this happens is that Google hasn't updated their docs for search in a long time and they are now completely out of date with what the ACTUAL requirements are for cursor rows returned to the Global Search Box. Also, they changed the required columns and uniqueness requirements in 2.2 and didnt tell anyone about it. Google needs to update these docs (http://developer.android.com/guide/topics/ search/adding-custom-suggestions.html). Not only are they wrong but very hard to understand. They introduce WAY too much complexity up front with a misguided emphasis on completeness. It is better to start with several minimal examples that each illustrate a single basic concept. Only then, after the basics have been introduced should you provide more advanced details. Context before exposition. Tech Docs 101.
Here's the REAL requirements: BaseColumns._ID - This is documented as required and as a unique INTEGER(long), whatever that means. It is required but as a unique String up until android 2.1. The string need not be numeric (neither an INTEGER or a long). It can be anything, but it must be unique. After 2.1, it can be anything, even null. It doesn't matter. You don't even have to include _id in the cursor at all. SearchManager.SUGGEST_COLUMN_INTENT_DATA - This is documented as optional. It is optional until 2.2, where not only is it a required String but it must be unique! It is required whether you specify android:searchSuggestIntentData in your searchable.xml or not. It does not have to be a URL. So, to be compatible with all versions of android (so far) you need both lines. Like this: private static final String[] SEARCH_CURSOR_COLUMNS = new String[]{ BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_TEXT_2, SearchManager.SUGGEST_COLUMN_INTENT_DATA, SearchManager.SUGGEST_COLUMN_SHORTCUT_ID }; public Cursor query( Uri uri, String[] columns, String where, String[] whereArgs, String sortOrder ) { MatrixCursor cursor = new MatrixCursor( SEARCH_CURSOR_COLUMNS ); cursor.addRow( newCursorRow("uniqueId1", "Android docs", "Need refactoring") ); cursor.addRow( newCursorRow("uniqueId2", "Bait", "and Switch") ); return cursor; } private Object[] newCursorRow( String uniqueId, String text1, String text2 ) { return new String[] { uniqueId, // _ID text1, // SUGGEST_COLUMN_TEXT_1 text2, // SUGGEST_COLUMN_TEXT_2 uniqueId, // SUGGEST_COLUMN_INTENT_DATA SearchManager.SUGGEST_NEVER_MAKE_SHORTCUT }; // SUGGEST_COLUMN_SHORTCUT_ID } Clark Battle -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en