【问题标题】:How to get type of a contact stored in SIMCARD in android version above 4.0?如何在 4.0 以上的 Android 版本中获取 SIM 卡中存储的联系人类型?
【发布时间】:2026-01-17 06:40:01
【问题描述】:

我想从 sim 和 4.0 及更高版本的电话中获取所有联系人,但使用电话类型。 我看到了这个链接How to get all contacts from phonebook & SIM card in Android?

但我没有得到联系人类型。

【问题讨论】:

    标签: android contactscontract


    【解决方案1】:

    当我获取 SIM CONTACTS 的 CURSOR 时,它给了我 5 列字段,分别是 name、number、extra_number、emails 和 _id

    所以它实际上并没有为我们提供类似于电话联系人的 mime-type 字段的“联系电话类型”字段。

    可能有可能,如果是,请,如果其他人可以完成此操作。

    我已经发布了我在我的应用程序中使用的代码。

    试试{ 字符串 m_simPhonename = null; 字符串 m_simphoneNo = null;

                    Uri simUri = Uri.parse("content://icc/adn"); 
                    Cursor cursorSim = this.getContentResolver().query(simUri,null,null,null,null);
    
                    Log.i("PhoneContact", "total: "+cursorSim.getCount());
    
                    while (cursorSim.moveToNext()) 
                    {      
                        m_simPhonename =cursorSim.getString(cursorSim.getColumnIndex("name"));
                        m_simphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number"));
    
                        m_simphoneNo.replaceAll("\\D","");
                        m_simphoneNo.replaceAll("&", "");
                        m_simPhonename=m_simPhonename.replace("|","");
    
                        Log.i("PhoneContact", "name: "+m_simPhonename+" phone: "+m_simphoneNo);
    
                        if(m_simphoneNo.length()>0){
                            if(m_simPhonename!=null){
    
                            }else{
                                m_simPhonename = m_simphoneNo;
                            }
                            callbackDB.InsertContacts(null, m_simPhonename+"="+m_simphoneNo, m_simphoneNo, null);
                        }
                    }     
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
    

    【讨论】: