2011-12-21 19 views
6

से फोन नंबर प्राप्त करना मैं अपने लुकअप यूआरआई का उपयोग करके एक संपर्क का फोन नंबर प्राप्त करने का प्रयास कर रहा हूं, लेकिन मुझे इसे काम नहीं मिल रहा है। content://com.android.contacts/contacts/lookup/0r1-304846522C3052482C4A3442423C3248/1लुकअप यूआरआई

किसी को भी जानता है कि मैं गलत क्या कर रही हूं:

Cursor myC = getContentResolver().query(lookupURI, null, null, 
         null, null); 
       String phoneNumber; 
       if (myC.moveToFirst()) { 
        while (myC.moveToNext()) { 
         phoneNumber = myC.getString(myC 
           .getColumnIndex(Phone.NUMBER)); 
         Log.v("t", "phone number is: " + phoneNumber); 
        } 
       } 

जहां lookupURI.toString() इस URI है?

उत्तर

5

इस बात की गारंटी नहीं कर सकते हैं 4.0 के लिए काम करेंगे, क्योंकि मैं एक समय में उपयोग नहीं किया है, लेकिन 2.3.3 पर ठीक काम करता है:

contactId पाने के लिए, मैं पहली बार उपयोगकर्ता किसी संपर्क का चयन करने के लिए मिल :

public void clickSelectContact(View v) { 
    Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
    startActivityForResult(i, CONTACTS_REQUEST_CODE); 
} 

उपयोगकर्ता एक संपर्क का चयन किया है जब यह इस विधि में वापस आता है:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == CONTACTS_REQUEST_CODE){ 
     if(resultCode == RESULT_OK){ 
      Uri uri = data.getData(); 
      System.out.println("uri: "+uri); 
      System.out.println("PHONE NUMBER: " + PhoneUtils.getContactPhoneNumber(this, uri.getLastPathSegment())); 
     } 
    } 
} 

कौन सा वर्ग util मेरी स्थिर कॉल:

private static final String TAG = "PhoneUtils"; 

public static String getContactPhoneNumber(Context context, String contactId) { 
    int type = ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE; 
    String phoneNumber = null; 

    String[] whereArgs = new String[] { String.valueOf(contactId), String.valueOf(type) }; 

    Log.d(TAG, "Got contact id: "+contactId); 

    Cursor cursor = context.getContentResolver().query(
          ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Phone._ID + " = ? and " + ContactsContract.CommonDataKinds.Phone.TYPE + " = ?", 
          whereArgs, 
          null); 

    int phoneNumberIndex = cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); 

    if (cursor != null) { 
     Log.d(TAG, "Returned contact count: "+cursor.getCount()); 
     try { 
      if (cursor.moveToFirst()) { 
       phoneNumber = cursor.getString(phoneNumberIndex); 
      } 
      } finally { 
       cursor.close(); 
      } 
    } 

    Log.d(TAG, "Returning phone number: "+phoneNumber); 
    return phoneNumber; 
} 

जहां संपर्क Id = lookupURI.getLastPathSegment();

इतनी सरल चीज़ के लिए इतना जटिल! :-(

पी एस आप अपने मेनिफ़ेस्ट में इस अनुमति की आवश्यकता हो सकती:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
संबंधित मुद्दे