संपर्क API का उपयोग कर संपर्क संख्या प्राप्त करने के संबंध में SO पर कई प्रश्न हैं लेकिन मैं यह जानना चाहता हूं कि पुनर्प्राप्त संख्या एक मोबाइल नंबर है या नहीं।संपर्क मोबाइल नंबर केवल
निम्नलिखित कोड अक्सर, एक तरह से एक संपर्क के फोन नंबर प्राप्त करने के लिए के रूप में दिखाया गया है के रूप में यह एक या अधिक फोन नंबरों की सूची हो जाता है:
String[] projection = {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1";
Cursor cursor = null;
Cursor phones = null;
try
{
cursor = managedQuery(intent.getData(), projection, selection, null, null);
while (cursor.moveToNext())
{
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
String pdata = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
Log.v("DATA",pdata);
}
}
}
catch (NullPointerException npe)
{
Log.e(TAG, "Error trying to get Contacts.");
}
finally
{
if (phones != null)
{
phones.close();
}
if (cursor != null)
{
cursor.close();
}
}
जबकि, यह ठीक काम करता है, वहाँ किसी भी तरह से है आसानी से पहचानें कि फोन नंबर एक मोबाइल प्रकार है (रेगेक्स के साथ पैटर्न मिलान करने की कोशिश करने के अलावा)।
मुझे लगता है डेटा की एक संबंधित टुकड़ा, वहाँ होना चाहिए ताकि मूल एप्लिकेशन फोन नंबर वर्गीकृत कर सकते हैं - नीचे चित्र में के रूप में:
सरल और सही +1 समाधान –