在应用开发中,我们经常会遇到短信邀请功能,把邀请内容通过短信的方式发给在通讯录中选择的联系人。

这里我们是直接跳转到系统默认的通讯录,所以我们用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);    }

这样,我们就实现了短信邀请功能了。

其实还是比较简单的,这里是 源码

更多相关文章

  1. 全局获取Context的技巧(再也不要为获取Context而感到烦恼)
  2. Android(安卓)开发学习进程0.15 adb cardview framelayout 控件
  3. Android(安卓)UI设计——画廊Gallery与提示框Dialog的综合运用
  4. Android应用获取系统属性
  5. Drawable和Bitmap转换
  6. Android(安卓)FrameWork——ActivityManager框架
  7. Android(安卓)学习入门最佳Demo--自定义View 属性,RelativeLayout
  8. Android(安卓)在低版本sdk中没有getSupportedPreviewSizes和getS
  9. Android初级教程获取手机系统联系人信息

随机推荐

  1. C语言如何获取进程ID?(代码实例)
  2. C和C ++之间的区别是什么
  3. c语言*p++是什么意思?
  4. .net和c#有什么区别
  5. C ++中continue和break语句的简单比较
  6. c语言计算两个数的最小公倍数
  7. 如何判断文件是否存在于Perl中
  8. 什么是变量的作用域
  9. 如何用Perl表示当前时间
  10. c语言如何实现选择排序算法(代码示例)