The required permission <uses-permission android: name = "android. permission. READ_CONTACTS"/>
Here we will write two methods.
Method 1: I can test it on Xiaomi's mobile phone. However, I found that the returned Uri is empty on other mobile phone tests. I did not know why, so I found the second solution.
Jump to the phone book
[Java] www.2cto.com
Intent I = new Intent (Intent. ACTION_PICK );
I. setType ("vnd. android. cursor. dir/phone ");
StartActivityForResult (I, SEND_SMS_TYPE );
Return to get data
[Java]
@ Override
Protected void onActivityResult (int requestCode, int resultCode, Intent data ){
Switch (requestCode ){
Case SEND_SMS_TYPE:
If (! (ResultCode = RESULT_ OK )){
Return;
}
If (data = null ){
Return;
}
Uri uri = data. getData ();
Cursor cursor = getContentResolver (). query (uri, null,
Null );
Cursor. moveToFirst ();
String number = cursor. getString (cursor
. GetColumnIndexOrThrow (Phones. NUMBER ));
SendAdrress = number;
SEND_TYPE = SEND_SMS_TYPE;
Send_text_SMS.setText ("send SMS" + ":" + number );
Break;
}
Super. onActivityResult (requestCode, resultCode, data );
}
Method 2:
[Java]
Intent I = new Intent ();
I. setAction (Intent. ACTION_PICK );
I. setData (ContactsContract. Contacts. CONTENT_URI );
StartActivityForResult (I, SEND_SMS_TYPE );
//-----------------------------------------------------------------
@ Override
Protected void onActivityResult (int requestCode, int resultCode, Intent data ){
Switch (resultCode ){
Case RESULT_ OK:
Switch (requestCode ){
Case SEND_SMS_TYPE:
If (data = null ){
Return;
}
String phoneNumber = null;
Uri contactData = data. getData ();
If (contactData = null ){
Return;
}
Cursor cursor = managedQuery (contactData, null );
If (cursor. moveToFirst ()){
// String name = cursor. getString (cursor
//. GetColumnIndex (ContactsContract. Contacts. DISPLAY_NAME ));
String hasPhone = cursor
. GetString (cursor
. GetColumnIndex (ContactsContract. Contacts. HAS_PHONE_NUMBER ));
String id = cursor. getString (cursor
. GetColumnIndex (ContactsContract. Contacts. _ ID ));
If (hasPhone. inclusignorecase ("1 ")){
HasPhone = "true ";
} Else {
HasPhone = "false ";
}
If (Boolean. parseBoolean (hasPhone )){
Cursor phones = getContentResolver (). query (
ContactsContract. CommonDataKinds. Phone. CONTENT_URI,
Null,
ContactsContract. CommonDataKinds. Phone. CONTACT_ID
+ "=" + Id, null, null );
While (phones. moveToNext ()){
PhoneNumber = phones
. GetString (phones
. GetColumnIndex (ContactsContract. CommonDataKinds. Phone. NUMBER ));
SetTitle (phoneNumber );
}
Phones. close ();
}
}
SendAdrress = phoneNumber;
SEND_TYPE = SEND_SMS_TYPE;
Send_text_SMS.setText ("send SMS" + ":" + phoneNumber );
Break;
}
Break;
}
Super. onActivityResult (requestCode, resultCode, data );
}