rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

電話帳からメールアドレスを取り出す android開発

2020 Apr. 30.

public class MainActivity extends AppCompatActivity {
    static final int PICK_MAIL_ADDRESS_CONTACT_REQUEST = 400;


    /* 
     * 電話帳アプリをstartActivityForResult()で開く
     */
    public void pickContact( ) {
        Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
        intent.setType(ContactsContract.CommonDataKinds.Email.CONTENT_TYPE);
        startActivityForResult(intent, PICK_MAIL_ADDRESS_CONTACT_REQUEST);
    }


    /*
     * Intentによってこのアクティビティから起動された他の機能から戻ってきた時の処理
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        /**
         * 電話帳アプリからのメールアドレスを受け取る
         */
        if (requestCode == PICK_MAIL_ADDRESS_CONTACT_REQUEST)  && 
                (resultCode == RESULT_OK) {
            Uri contactUri = data.getData();
            getMailAddressFromUri( contactUri );
        }
        return;
    }


    /**
     * 電話帳アプリから取得したURIからメールアドレスを取得する
     *
     * @param uri: 電話帳アプリから戻ってきたdataに収まっているURI
     */
    protected String getMailAddressFromUri( Uri uri ) {
        String[] projection = {ContactsContract.CommonDataKinds.Email.ADDRESS};
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        cursor.moveToFirst();

        // メールアドレスをuriから取得
        int addressCol = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS);
        return cursor.getString(addressCol);
    }
}