4

当用户搜索联系人时,我试图在搜索对话框中显示自定义建议。自定义建议要求内容提供程序返回一个列,其中一个列名为SearchManager.SUGGEST_COLUMN_TEXT_1.

我正在查询声明投影的联系人提供程序,如下所示:

String[] projection = new String[]{Contacts._ID,Contacts.DISPLAY_NAME + " AS " + SearchManager.SUGGEST_COLUMN_TEXT_1};

但这是抛出异常:

java.lang.IllegalArgumentException: Invalid column display_name AS suggest_text_1

我一直在研究,这是由于联系人提供程序strictProjectionMap在他们的 中设置了标志SQLiteQueryBuilder,所以我想知道是否有人有解决方法来指定别名。我找到了几个解决方案,但这些解决方案需要修改内容提供程序,在这种情况下这是不可能的,因为它是一个 Android 提供程序。

如果不可能,这种情况的最佳做法是什么?我当前的解决方案是使用正确的列名创建一个MatrixCursor,并将查询返回的游标中的所有值复制到联系人提供程序,但在效率方面感觉非常错误,所以我认为可能有更好的方法。

感谢您的建议。胡安

4

0 回答 0