2012-10-05 21 views
7

का दृष्टांत नहीं कर सकते मैं फोन नंबर के साथ संपर्क लेने के लिए कोशिश कर रहा हूँ है.और मैं this codeएंड्रॉइड: संपर्क पिकर इरादा | प्रकार उरी

static final int PICK_CONTACT_REQUEST = 1; // The request code 
... 
private void pickContact() { 
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, new Uri("content://contacts")); 
    pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 
} 

अनुसरण कर रही हूं लेकिन दुर्भाग्य से, इसकी एक त्रुटि दिखा: Cannot instantiate the type Uri

असल में मैं एक और काम कर रहा है जो कोड पूरी तरह से काम कर रहा है, लेकिन ईमेल संपर्कों को चुनने पर दुर्घटनाग्रस्त है। मुझे केवल फोन नंबर चाहिए।

Intent intentContact = new Intent(Intent.ACTION_PICK, 
           ContactsContract.Contacts.CONTENT_URI); 
intentContact.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          startActivityForResult(intentContact, PICK_CONTACT); 

और onReceive() पर, इस विधि कहा जाता है

public void getContactInfo(Intent intent) { 

    ContentResolver cr = getContentResolver(); 
    cursor = cr.query(intent.getData(), null, null, null, null); 

    while (cursor.moveToNext()) { 
     String contactId = cursor.getString(cursor 
       .getColumnIndex(ContactsContract.Contacts._ID)); 
     if (Integer 
       .parseInt(cursor.getString(cursor 
         .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
      Cursor phones = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
          + " = " + contactId, null, null); 
      while (phones.moveToNext()) { 
       phoneNumber = phones 
         .getString(phones 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      } 
      phones.close(); 
     } else { 
      snipp.showAlertDialog(getApplicationContext(), "No Number", 
        "Cannot read number", false); 
     } 

    } 
    cursor.close(); 
} 

उत्तर

10

यह मेरे लिए काम करता है:

private void pickContact() { 
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 
} 

संपादित करें:

आपका onActivityResult() इस तरह दिखना चाहिए:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 

    super.onActivityResult(requestCode, resultCode, intent); 
    if (requestCode == PICK_CONTACT_REQUEST) { 

     if (resultCode == RESULT_OK) { 
       Uri pickedPhoneNumber = intent.getData(); 
       // handle the picked phone number in here. 
      } 
     } 
    } 
} 
+0

कोड का क्या लाइन है इस अपवाद का कारण बन रहा है? क्या आप सवाल में पूरा ढेर पेस्ट कर सकते हैं? क्या आप अपना एक्टिविटी रिसेट() पर परिभाषित कर रहे हैं? –

+0

फिक्स्ड। :) यह एक साधारण फिक्स था .. असल में मेरी गलती .. आपके मूल्यवान समय के लिए धन्यवाद .. –

5

उपयोग Uri.parse() के बजाय। आप एक उरी instsntiate नहीं कर सकते हैं सीधे

संबंधित मुद्दे