最近比较忙,也就只能忙里偷闲,搞下博客了....
上次有个功能需要获取手机通讯录的..就拿出来单独搞一下
首先第一步吧,你得给权限....6.0以上动态权限获取...这个可不能忘记了...忘记了分分钟闪退
其次, 建立一个Bean类,PhoneBean类, 将手机和号码封装一下.....现在的通讯录很多都是一个人名多个手机号码的...用以下的方法,都能一个个拿出来....,最后,记得格式化手机号码...匹配正则,然后存起来
public static List<PhoneBean> getPhoneNumberFromMobile(Context context) {
List<PhoneBean> list = new ArrayList<PhoneBean>();
Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
//moveToNext方法返回的是一个boolean类型的数据
while (cursor.moveToNext()) {
//读取通讯录的姓名
String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//读取通讯录的号码
String number = cursor.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));//NUMBER
//格式化手机号
number = number.replace("-","");
number = number.replace(" ","");
//判断手机号码 11位的为准 放进集合里
if (number.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$")) {
PhoneBean phoneInfo = new PhoneBean();
phoneInfo.setName(name);
phoneInfo.setNumber(number);
list.add(phoneInfo);
}
}
return list;
}
完美拿到用户手机号码....
Android 发短信也是同样要动态获取权限的
复制代码
/**
* 直接调用短信接口发短信
*
* @param phoneNumber
* @param message
*/
public void sendSMS(String phoneNumber, String message) {
// 获取短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager
.getDefault();
// 拆分短信内容(手机短信长度限制)
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, sentPI,
deliverPI);
}
}
另一种写法
/**
* 调起系统发短信功能
* @param phoneNumber
* @param message
*/
public void doSendSMSTo(String phoneNumber,String message){
if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body", message);
startActivity(intent);
}
}