Androidは、単一の連絡先情報を取得し、コンテンツを共有する(メール招待)


アプリケーション開発では、メール招待機能に遭遇し、招待内容をメールで通信録で選択した連絡先に送ることがよくあります.
ここではシステムのデフォルトの通信録に直接ジャンプするので、IntentのstartActivity ForResultでジャンプします.
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 1);

onActivity Resultで連絡先の情報を取得します.
    @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);
    }

これにより、メール招待機能が実現しました.
実は比較的に簡単で、ここはソースコードです