more and more Android apps are now using their mobile phone numbers to sign up and get their phone verification code to complete their registration. There are many applications to provide phone address Book backup function, get your permission to save your phone number in the address book to the server, you want to be down, for example, QQ, etc. have this function. So how do we get the phone number from the user's address book? Android is ready for us:
---------------------------------get contact information for contacts---------------------------------------------------
First Step plus permissions:
<!--reading Contacts--
<uses-permission android:name= "Android.permission.READ_CONTACTS" ></uses-permission>
Write the code again:
/** contacts on the phone
* External programs can access the data provided by the ContentProvider via the Contentresolver interface,
* Contentresolver instances of the current application can be obtained through getcontentresolver () in activity
* */
cursor cursor = getcontentresolver (). query (ContactsContract.Contacts.CONTENT_URI, NULL, NULL, NULL, and NULL);
StringBuffer buffers = new StringBuffer ();
/** when there is data */
while (Cursor.movetonext ()) {
/** id*/for each contact in the Address Book
String contactId = cursor.getstring (Cursor.getcolumnindex (contactscontract.contacts._id));
/** name of contact in Address Book */
String name = cursor.getstring (Cursor.getcolumnindexorthrow (ContactsContract.Contacts.DISPLAY_NAME));
/** whether the contact has a phone, the result is a string type, 1 indicates yes, 0 is not */
String Hasphone = cursor.getstring (Cursor.getcolumnindex (ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Hasphone.equalsignorecase ("1"))
Hasphone = "true";
Else
Hasphone = "false";
/** If there is a call, find the contact's phone number according to the contact's ID, the phone can be multiple */
if (Boolean.parseboolean (Hasphone)) {
Cursor mcursor = Getcontentresolver (). query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, NULL,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, NULL, NULL);
String PhoneNumber = "";
while (Mcursor.movetonext ()) {
Phonenumber=mcursor.getstring (Mcursor.getcolumnindex (ContactsContract.CommonDataKinds.Phone.NUMBER));
}
/** If a contact has more than one phone, such as a mobile phone and a landline, record it in the form of the {contact: number, contact: number} * *
Buffers.append ("{");
Buffers.append (Api.Contact.CONTACT_NAME). Append (":"). Append (NAME). Append (",");
Buffers.append (Api.Contact.CONTACT_NUM). Append (":"). Append (PhoneNumber);
if (Cursor.islast ()) {
Buffers.append ("}");
} else {
Buffers.append ("},");
}
/** query to the cursor, obtained the corresponding information, can be saved up */
Mcursor.close ();
}
}
---------------------------------use radio to monitor SMS messages---------------------------------------------------
The first step is still to add permissions:
<!--receive SMS-
<uses-permission android:name= "Android.permission.RECEIVE_SMS" ></uses-permission>
<!--texting--
<uses-permission android:name= "Android.permission.SEND_SMS" ></uses-permission>
The second step, write the broadcast code:
public class Smsreceiver extends Broadcastreceiver {
@SuppressLint ("SimpleDateFormat")
@Override
public void OnReceive (Context arg0, Intent arg1) {
/** Get Broadcast Data */
Bundle bundle = Arg1.getextras ();
/** Judgment Data */
if (bundle! = null && bundle.size () > 0) {
/** get an Array object consisting of text messages */
Object[] Objs = (object[]) bundle.get ("PDUs");
for (Object Object:objs) {
Smsmessage mess = SMSMESSAGE.CREATEFROMPDU ((byte[]) object);
/** received SMS content * *
String message = Mess.getmessagebody ();
/** the phone number of the person who sent the message * *
String telephonenum = mess.getdisplayoriginatingaddress ();
/* Reciprocity, let's give him a reply. Message: Now becomes the receiver phone number */
String sendTo = Telephonenum;
/** SMS Manager Smsmanager Object */
Smsmanager Smsmanager = Smsmanager.getdefault ();
/** Add last time */
Date date = new Date (Mess.gettimestampmillis ());
/** Time Format */
SimpleDateFormat format = new SimpleDateFormat ("Yyyy-mm-dd HH:mm:ss");
String sendtime = Format.format (date);
/** we want to send each other text message content */
String Text = "Send time:" + sendtime + "\ n Send content:" The message you gave me is: "+message +" I give you back information, please check! ";
/** send a text message out * *
Smsmanager.sendtextmessage (SendTo, NULL, text, NULL, NULL);
This.abortbroadcast ();//Interrupt Broadcast
Break
}
}
}
}
The third step is to register the broadcast in the Androidmanifest.xml:
<!--sign up for SMS broadcast---
<receiver android:name= ". SMS. Smsreceiver "><!--Smsreceiver is written in the SMS file under my corresponding package--
<intent-filter android:priority= ><!--give a priority value, the higher the value, the higher the priority--
<action android:name= "Android.provider.Telephony.SMS_RECEIVED" ></action>
</intent-filter>
</receiver>
Android Phone get contacts contact information and SMS broadcast implementation