【问题标题】:Fetch Local phonebook contacts From SIM card only android仅从 SIM 卡中获取本地电话簿联系人 android
【发布时间】:2012-05-02 11:15:30
【问题描述】:

我想知道是否可以获取仅存在于 SIM 卡或电话簿中的联系人。现在我正在使用以下代码来获取联系人,它会获取所有联系人,甚至是我的 gmail 和 Facebook 联系人。

Cursor cursor = getContentResolver().query(
                    ContactsContract.Contacts.CONTENT_URI, null, null, null, Phone.DISPLAY_NAME + " ASC");
            if (cursor.getCount() > 0)
            {
                while (cursor.moveToNext())
                {

                    PhoneBookUserEntity user = new PhoneBookUserEntity();
                    // Pick out the ID, and the Display name of the
                    // contact from the current row of the cursor
                    user.setId(cursor.getString(cursor.getColumnIndex(BaseColumns._ID)));
                    user.setPhoneBookName(cursor.getString(cursor.getColumnIndex(
                            ContactsContract.Contacts.DISPLAY_NAME)));
                    if(user.getphonebookname().length() > 4)
                    username = user.getphonebookname();//.substring(0,4);
                    else
                        username = user.getphonebookname();//.substring(0,1);
                    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
                    //    if (Boolean.parseBoolean(hasPhone)) { 
                    Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ user.getId(), null, null); 
                    while (phones.moveToNext()) { 
                        user.sePhoneNumber(phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER)));                 
                    } 
                    phones.close(); 
                    //}
                    // user.sePhoneNumber(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

                    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + user.getId(), null, null); 
                    while (emails.moveToNext()) { 
                        // This would allow you get several email addresses 
                        user.setEmailAddress(emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))); 
                    } 
                    emails.close(); 
                    user.setImageURI(getPhotoUri(user.getId()));
                    SearchContactsActivity.this.runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            _progressDialog.setMessage("Copying over your local phone book. Retrieving contact information for \n"+ username.toUpperCase());
                        }
                    });
                    arraylist.add(user);
                }

            }
            cursor.close();

【问题讨论】:

    标签: android contacts local sim-card


    【解决方案1】:

    仅限 Sim 联系人,您可以使用以下代码

    private void allSIMContact()
        {
            try
            {
                String ClsSimPhonename = null; 
                String ClsSimphoneNo = 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()) 
                {      
                    ClsSimPhonename =cursorSim.getString(cursorSim.getColumnIndex("name"));
                    ClsSimphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number"));
                    ClsSimphoneNo.replaceAll("\\D","");
                    ClsSimphoneNo.replaceAll("&", "");
                    ClsSimPhonename=ClsSimPhonename.replace("|","");
    
                    Log.i("PhoneContact", "name: "+ClsSimPhonename+" phone: "+ClsSimphoneNo);
                }        
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
    
        }
    

    【讨论】:

      【解决方案2】:
      Cursor cursor = getContacts();
          getBundleValues2();
      
          String displayName = "";
          while (cursor.moveToNext()) {
              //taking id name and phone number from contacts using content provider
              String displayid = cursor.getString(cursor
                      .getColumnIndex(ContactsContract.Contacts._ID));
      
              displayName = cursor.getString(cursor
                      .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
      
              String displayphnno = "";
      
              ContentResolver cr = getContentResolver();
      
              if (Integer.parseInt(cursor.getString(cursor
                      .getColumnIndex(ContactsContract.Data.HAS_PHONE_NUMBER))) > 0) {
      
                  Cursor pCur = cr.query(
                          ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                  + " = ?", new String[] { displayid }, null);
                  while (pCur.moveToNext()) {
                      displayphnno = pCur
                              .getString(pCur
                                      .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
                              + "\n";
      
                      ContactProviderViewGroup v6;
                      //using view group appending it to an activity
                      if (colorFlag) {
                          v6 = new ContactProviderViewGroup(this, displayName,
                                  displayphnno, passedid, colorFlag);
                          colorFlag = false;
                      } else {
                          v6 = new ContactProviderViewGroup(this, displayName,
                                  displayphnno, passedid, colorFlag);
                          colorFlag=true;
                      }
                      LL1.addView(v6);
                  }
                  pCur.close();
              }
      
          }
      
      }
      
      private void getBundleValues2() {
          Intent i = getIntent();
          Bundle myBundle = i.getExtras();
      
          if (myBundle != null) {
              passedid = myBundle.getInt("gid");
          }
      }
      
      private Cursor getContacts() {
          // Run query
          Uri uri = ContactsContract.Contacts.CONTENT_URI;
      
          String[] projection = new String[] { ContactsContract.Contacts._ID,
                  ContactsContract.Contacts.DISPLAY_NAME,
                  ContactsContract.Contacts.HAS_PHONE_NUMBER };
      
          String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
                  + ("1") + "'";
          String[] selectionArgs = null;
          String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
                  + " COLLATE LOCALIZED ASC";
      
          return managedQuery(uri, projection, selection, selectionArgs,
                  sortOrder);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 2014-02-19
        • 2013-12-16
        • 1970-01-01
        • 2011-04-02
        • 2019-11-28
        相关资源
        最近更新 更多