2014-11-25 148 views
0

我正在開發一個使用firebase(用於後端)的簡單信使應用程序。我希望將用戶的聯繫電話號碼與存儲在我的數據庫中的聯繫人電話號碼進行比較,以便用戶可以查看精緻的聯繫人列表。我在谷歌查找,但我找不到一個方法來獲取數字存儲在一個單獨的變量。我想下面的代碼在堆棧溢出另一篇文章,但我在getactivity得到一個錯誤說如果你正在使用的代碼中的活動我覺得比getActivity()不是「無法解析法」從用戶手機獲取聯繫人

 ContentResolver cr = getActivity().getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
          new String[]{id}, null); 
        while (pCur.moveToNext()) { 
         int phoneType = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
         String phoneNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         switch (phoneType) { 
          case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
           Log.e(name + "(mobile number)", phoneNumber); 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
           Log.e(name + "(home number)", phoneNumber); 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
           Log.e(name + "(work number)", phoneNumber); 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER: 
           Log.e(name + "(other number)", phoneNumber); 
           break; 
          default: 
           break; 
         } 
        } 
        pCur.close(); 
       } 
      } 


     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

回答

2

最有可能需要的話,你可以直接調用getContentResolver(),但如果仍然不行,試試這個來獲取聯繫人和其他細節。我從我的項目之一複製代碼,所以希望你能明白,

ArrayList<DeviceContacts> contactsList = new ArrayList<DeviceContacts>(); 
    Cursor cur = getContentResolver().query(
      ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 

      // read id 
      String id = cur.getString(cur 
        .getColumnIndex(ContactsContract.Contacts._ID)); 
      /** read names **/ 
      displayName = null; 
      displayName = cur 
        .getString(cur 
          .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

      /** read image uri's **/ 
      imageuri = null; 
      imageuri = cur 
        .getString(cur 
          .getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)); 

      /** Phone Numbers **/ 
      Cursor pCur = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
          + " = ?", new String[] { id }, null); 
      number = null; 
      typeStr = null; 
      while (pCur.moveToNext()) { 

       number = pCur 
         .getString(pCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       typeStr = pCur 
         .getString(pCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
       Log.i("ContactsList", "Contact number :" + number); 
       Log.i("ContactsList", "Number type :" + typeStr); 

      } 
      pCur.close(); 
      /** EMAIL **/ 
      Cursor emailCur = getContentResolver().query(
        ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Email.CONTACT_ID 
          + " = ?", new String[] { id }, null); 

      email = null; 

      while (emailCur.moveToNext()) { 
       email = emailCur 
         .getString(emailCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 

      } 

      DeviceContacts dContacts = new DeviceContacts(); // simple model class 
      dContacts.setDisplayName(displayName); 
      dContacts.setmNumber(number); 
      dContacts.setEmail(email); 
      dContacts.setImageUri(imageuri); 
      contactsList.add(dContacts); 

      emailCur.close(); 

     } 
    } 
    cur.close(); 

希望這可以幫助

+0

感謝您對穆克什答覆...我會嘗試一下代碼,我會給你我的反饋:) – ananymous59 2014-11-25 13:14:13

+0

繼續,並取得成功:) – 2014-11-25 13:19:54

+0

感謝百萬工作:) – ananymous59 2014-11-25 13:51:00