Android获取一个联系人并发短信_调用系统通讯录选择联系人代码
2015-10-12 12:22:15  By: dwtedx

手头一项目、要坐通讯录里面选一个联系人出来、然后直接给这个联系人发短信、一拿到这个需求、头都大了、如果自己读取联系人话、会更麻烦、还不如直接打开联系人app、通过调用系统联系人的方式选择、不用自己去处理界、大概分析一下思路、先要打开通讯录的app、然后选择一个联系人、最后打开短信app把号码和内容都设置进去


一、Intent启动联系人app

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, REQUEST_CODE_CONTENT);


二、onActivityResult处理号码并发送短信

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case REQUEST_CODE_MOBILE:
            if (resultCode == RESULT_OK) {
                Uri contactData = data.getData();
                Cursor cursor = getContentResolver().query(contactData, null, null, null, null);
                cursor.moveToFirst();
                String num = this.getContactPhone(cursor);
                //打开短信app
                Uri uri = Uri.parse("smsto:"   num);
                Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
                sendIntent.putExtra("sms_body", textShear);
                startActivity(sendIntent);
            }
            break;

        default:
            break;
    }
}


三、getContactPhone代码

private String getContactPhone(Cursor cursor) {
    int phoneColumn = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
    int phoneNum = cursor.getInt(phoneColumn);
    String result = "";
    if (phoneNum > 0) {
        // 获得联系人的ID号
        int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
        String contactId = cursor.getString(idColumn);
        // 获得联系人电话的cursor
        Cursor phone = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID  + "=" + contactId, null, null);
        if (phone.moveToFirst()) {
            for (; !phone.isAfterLast(); phone.moveToNext()) {
                int index = phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                int typeindex = phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
                int phone_type = phone.getInt(typeindex);
                String phoneNumber = phone.getString(index);
                result = phoneNumber;
//                  switch (phone_type) {//此处请看下方注释
//                  case 2:
//                      result = phoneNumber;
//                      break;
//
//                  default:
//                      break;
//                  }
            }
            if (!phone.isClosed()) {
                phone.close();
            }
        }
    }
    return result;
}


四、AndroidManifest.xml添加权限

<!-- 短信相关 -->
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<!-- 电话号码相关 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />


好了、这样就可以实现在应用里面选择联系人并发送短信了、切记要添加权限不然会出错的

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+