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";elsehasPhone = "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")@Overridepublic 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中注册广播:

自己要先看得起自己,别人才会看得起你

Android手机获取通讯录联系人信息及短信广播实现

相关文章:

你感兴趣的文章:

标签云: