相关疑难解决方法(0)

尝试查询列时删除了无效列

我试图在我的Android应用程序中执行以下查询:

private static final String[] PROJECTION =
            {
                    Data.CONTACT_ID, Data.MIMETYPE,
                    Data.DISPLAY_NAME, Phone.NUMBER,
                    Phone.TYPE, StructuredName.GIVEN_NAME,
                    StructuredName.MIDDLE_NAME,
                    StructuredName.FAMILY_NAME,
                    Data.DELETED
            };


private static final String SELECTION = "(" + Data.MIMETYPE + " = ? AND "
        + Phone.TYPE + " IN (?,?,?)) OR ("
        + Data.MIMETYPE + " IN (?))";


private static final String[] SELECTION_ARGS =
        {
                Phone.CONTENT_ITEM_TYPE,
                String.valueOf(Phone.TYPE_MOBILE),
                String.valueOf(Phone.TYPE_HOME),
                String.valueOf(Phone.TYPE_WORK),
                StructuredName.CONTENT_ITEM_TYPE
        };
final Cursor cursor = mContext.getContentResolver().query(
                Data.CONTENT_URI, PROJECTION, SELECTION, SELECTION_ARGS, Data.CONTACT_ID);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

04-29 11:00:58.715  8588 15565 E DatabaseUtils: Writing exception to …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

9
推荐指数
1
解决办法
333
查看次数

获取具有类型到过滤功能的Android联系人,仅限特定帐户

我试着:

  • 显示联系人列表
  • 让用户通过键入查询来搜索它们
  • 仅将搜索结果限制为特定的Google/Gmail帐户.

这是我为游标构建URI的方法:

// User is searching for 'jo'
String query = "jo";
Uri uri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI, Uri.encode(query));

// Restrict the query to contacts from 'example@gmail.com'
Uri.Builder builder = uri.buildUpon();
builder.appendQueryParameter(
    ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(ContactsContract.Directory.DEFAULT));
builder.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_NAME, "example@gmail.com");
builder.appendQueryParameter(ContactsContract.RawContacts.ACCOUNT_TYPE, "com.google");

uri = builder.build();
Run Code Online (Sandbox Code Playgroud)

这是最终的URI:

content://com.android.contacts/contacts/filter/jo?directory=0&account_name=example%40gmail.com&account_type=com.google
Run Code Online (Sandbox Code Playgroud)

目前,这显示了手机上所有帐户的搜索结果.


注意:如果我使用Contacts.CONTENT_URI而不是Contacts.CONTENT_FILTER_URI,则指定目录/帐户按预期工作,但我不能再使用"类型到过滤器"样式搜索.

文件确实状态:

目录最重要的用例是搜索.目录提供商预计至少会支持Contacts.CONTENT_FILTER_URI.

任何人都可以帮助指出我可能做错了什么吗?

android contactscontract android-contentprovider android-contacts

7
推荐指数
1
解决办法
1728
查看次数