【问题标题】:How to launch contact detail activity of directory contact in android如何在android中启动目录联系人的联系人详细信息活动
【发布时间】:2018-08-13 09:42:47
【问题描述】:

我正在尝试使用联系人 ID 启动目录联系人(一些组织联系人)的详细信息页面。对于本地联系人,它工作正常,但对组织联系人不起作用。

这是我的代码。 (name 是联系人姓名,idstr 是目录 id)

lookupByName = ContactsContract.Contacts.CONTENT_FILTER_URI.buildUpon().appendEncodedPath(name)
                        .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, idStr).build();


            mCursor = mContext.getContentResolver().query(lookupByName, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID}, null, null, null);


            if (mCursor.moveToFirst()) {
                idPhone = 
                Long.valueOf(mCursor.getString(
            mCursor.getColumnIndex(ContactsContract.PhoneLookup._ID)));        
           }
   Intent intent = new Intent(Intent.ACTION_VIEW);                    
   intent.setData(ContentUris.
       withAppendedId(ContactsContract.Contacts.CONTENT_URI, idPhone ));        
  startActivity(intent);

请帮帮我。

提前致谢。

【问题讨论】:

    标签: contacts android-contacts contactscontract


    【解决方案1】:

    这很棘手,但设法让它工作 您需要获取联系人的LOOKUP_KEY,从中构建LookupUri,将DIRECTORY_PARAM_KEY 附加到LookupUri,并将其放入intent 的setData

    String name = "hello";
    String directoryId = "5"
    
    Uri uri = Contacts.CONTENT_FILTER_URI.buildUpon().appendPath(name).appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, directoryId).build();
    String[] projection = new String[]{Contacts._ID, Contacts.DISPLAY_NAME, Contacts.LOOKUP_KEY};
    Cursor cur = getContentResolver().query(uri, projection, null, null, null);
    DatabaseUtils.dumpCursor(cur); // debug
    
    // add some safety checks first obviously...
    cur.moveToFirst();
    String lookup = cur.getString(2);
    Uri lookupUri = Contacts.getLookupUri(cur.getLong(0), lookup).buildUpon().appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, directoryId).build();
    
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(lookupUri);
    startActivity(intent);
    

    【讨论】:

    • 谢谢马尔默。我找到了解决方案,但忘记在此处更新。
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多