android获取单个通讯录联系人信息并分享内容(短信邀请)
2015-10-13 22:25
543 查看
在应用开发中,我们经常会遇到短信邀请功能,把邀请内容通过短信的方式发给在通讯录中选择的联系人。
这里我们是直接跳转到系统默认的通讯录,所以我们用Intent的startActivityForResult跳转。
在onActivityResult里面我们获取联系人的信息:
获取手机号码的getContactPhone(Cursor cursor)方法
获取手机号码后,我们就直接跳转到发送短信界面了。
这样,我们就实现了短信邀请功能了。
其实还是比较简单的,这里是 源码
这里我们是直接跳转到系统默认的通讯录,所以我们用Intent的startActivityForResult跳转。
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 1);
在onActivityResult里面我们获取联系人的信息:
@Override protected 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); }
这样,我们就实现了短信邀请功能了。
其实还是比较简单的,这里是 源码
相关文章推荐
- Android 五大布局之(一) 线性布局和相对布局
- Android 6.0中art虚拟机编译dex时已完全放弃使用LLVM
- android 捕获 UncaughtExceptionHandler
- Android中windowSoftInputMode属性详解
- Android应用开发性能优化完全分析
- 【Android】error: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'.
- Android Intent 意图作用
- Android 获取屏幕高宽度,密度,通知栏高度,截图等常用方法
- Android Toast提示封装
- Android 隐藏显示键盘
- 【Android】未引入包问题
- Android 项目实践(三)——数据库封装
- Android自定义View系列之可伸缩的TextView
- android代码实现app升级
- Android 工具类 —— 系统px 和 dp 的转换
- Android自定义属性
- 在线自动生成.9png图的Android设计切图工具推荐
- android系统默认设置修改(1)-- 设置默认浏览器
- 安卓开发环境安装--菜鸟之路(一)
- [转]Android实现计时与倒计时(限时抢购)的几种方法