android获取单个通讯录联系人信息并分享内容(短信邀请)
16lz
2021-01-26
在应用开发中,我们经常会遇到短信邀请功能,把邀请内容通过短信的方式发给在通讯录中选择的联系人。
这里我们是直接跳转到系统默认的通讯录,所以我们用Intent的startActivityForResult跳转。
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);startActivityForResult(intent, 1);
在onActivityResult里面我们获取联系人的信息:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case (1): { if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null); c.moveToFirst(); String phoneNum = this.getContactPhone(c); sendSmsWithBody(MainActivity.this,phoneNum,"我正在使用免费**应用,每月登录送话费"); } break; } } }
获取手机号码的getContactPhone(Cursor cursor)方法
//获取联系人电话 private String getContactPhone(Cursor cursor) { int phoneColumn = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); int phoneNum = cursor.getInt(phoneColumn); String phoneResult=""; //System.out.print(phoneNum); if (phoneNum > 0) { // 获得联系人的ID号 int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID); String contactId = cursor.getString(idColumn); // 获得联系人的电话号码的cursor; Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, null, null); if (phones.moveToFirst()) { // 遍历所有的电话号码 for (;!phones.isAfterLast();phones.moveToNext()) { int index = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int typeindex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); int phone_type = phones.getInt(typeindex); String phoneNumber = phones.getString(index); switch(phone_type) { case 2: phoneResult=phoneNumber; break; } } if (!phones.isClosed()) { phones.close(); } } } return phoneResult; }
获取手机号码后,我们就直接跳转到发送短信界面了。
/** * 调用系统界面,给指定的号码发送短信,并附带短信内容 * * @param context * @param number * @param body */ public void sendSmsWithBody(Context context, String number, String body) { Intent sendIntent = new Intent(Intent.ACTION_SENDTO); sendIntent.setData(Uri.parse("smsto:" + number)); sendIntent.putExtra("sms_body", body); context.startActivity(sendIntent); }
这样,我们就实现了短信邀请功能了。
其实还是比较简单的,这里是 源码
更多相关文章
- 全局获取Context的技巧(再也不要为获取Context而感到烦恼)
- Android(安卓)开发学习进程0.15 adb cardview framelayout 控件
- Android(安卓)UI设计——画廊Gallery与提示框Dialog的综合运用
- Android应用获取系统属性
- Drawable和Bitmap转换
- Android(安卓)FrameWork——ActivityManager框架
- Android(安卓)学习入门最佳Demo--自定义View 属性,RelativeLayout
- Android(安卓)在低版本sdk中没有getSupportedPreviewSizes和getS
- Android初级教程获取手机系统联系人信息