Android手機擷取通訊錄連絡人資訊及簡訊廣播實現

來源:互聯網
上載者:User

標籤:android應用   通訊錄   簡訊   

            現在越來越多的android應用在註冊時都要用到手機號碼,通過擷取手機驗證碼來完成註冊。也有不少應用提供了手機通訊錄備份功能,獲得你的允許後把你的通訊錄中的手機號碼儲存到伺服器中,你要的時候又可以down下來,比如,QQ等就有這們的功能。那我們怎麼樣擷取使用者通訊錄中的手機號碼呢?Android已經為我們做好了準備:
---------------------------------擷取通訊錄連絡人資訊---------------------------------------------------

第一步加許可權:

     <!-- 讀取連絡人 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

再寫代碼:

  /**手機上的連絡人 
 * 外界的程式通過ContentResolver介面可以訪問ContentProvider提供的資料,
 * 在Activity當中通過getContentResolver()可以得到當前應用的 ContentResolver執行個體
 * */
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

StringBuffer buffers = new StringBuffer();

                   /**當有資料時*/

while (cursor.moveToNext()) {

                          /**通訊錄中每個連絡人的ID*/

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
/**通訊錄中連絡人的名字*/
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
/**連絡人是否有電話,返回結果是String類型,1表示有,0表是沒有*/
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1"))
hasPhone = "true";
else
hasPhone = "false";
/**如果有電話,根據連絡人的ID尋找到連絡人的電話,電話可以是多個*/
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));

}

                               /**如果連絡人有多個電話,比如有手機也有有線電話時,就用{連絡人:號碼,連絡人:號碼}的形式記錄下來*/

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("},");

}

                              /**查詢完要Cursor,取得了對應的資訊,可以儲存起來*/

mCursor.close();
}
}

---------------------------------用廣播監聽簡訊資訊---------------------------------------------------

第一步仍是加許可權:

<!-- 收簡訊 -->
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <!-- 發簡訊 -->
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

第二步,寫廣播代碼:

public class SmsReceiver extends BroadcastReceiver {


@SuppressLint("SimpleDateFormat")
@Override
public void onReceive(Context arg0, Intent arg1) {
/**擷取廣播資料*/
Bundle bundle = arg1.getExtras();
/**判斷資料*/
if (bundle != null && bundle.size() > 0) {
/**獲得簡訊內容組成的數組對象*/
Object[] objs = (Object[]) bundle.get("pdus");
for (Object object : objs) {
SmsMessage mess = SmsMessage.createFromPdu((byte[]) object);
/**收到的簡訊內容 */
String message = mess.getMessageBody();
/**發簡訊者的電話號碼 */
String telephoneNum = mess.getDisplayOriginatingAddress();


/* 礼尚往來嘛,我們再給他回條資訊:現在變成接收人電話號碼 */
String sendTo = telephoneNum;
/**簡訊管理器SmsManager對象*/
SmsManager smsManager = SmsManager.getDefault();
/**添加上一個時間*/
Date date = new Date(mess.getTimestampMillis());
/**時間格式*/
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sendTime = format.format(date);
/**我們要發給對方的簡訊內容*/
String text = "發送時間:" + sendTime + "\n發送內容:你給我的資訊內容是:"+message + "我給你回資訊啦,請查收!";
/**傳送簡訊出去*/
smsManager.sendTextMessage(sendTo, null, text, null, null);
this.abortBroadcast();// 中斷廣播
break;
}
}
}
}

第三步,在AndroidManifest.xml中註冊廣播:

<!-- 註冊簡訊廣播 -->
        <receiver android:name=".sms.SmsReceiver"><!--SmsReceiver是寫在我對應包名下的sms檔案下 -->
            <intent-filter android:priority="1000"><!-- 給了個優先順序值,值越大,優先順序越高 -->
                <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
            </intent-filter>
        </receiver>


Android手機擷取通訊錄連絡人資訊及簡訊廣播實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.