managedQueryで端末内の連絡先の情報だけを取得するには

688 views
Skip to first unread message

Kishimoto Tadashi

unread,
Aug 4, 2011, 3:55:43 AM8/4/11
to 日本Androidの会
こんにちは、岸本です。

managedQueryで端末内の連絡先のメールアドレスだけを取得したいのですが、下記のコードの場合、Gmail(Googleアカウント)の連
絡先もいっしょに表示されてしまいます。

Cursor emails =
activity.managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ " = " + id, null, null);

端末内の連絡先のメールアドレスだけを取得するにはどうすればいいのでしょうか?
ご存知の方がいらっしゃいましたら教えてください。

よろしくお願いします。

荒田真一

unread,
Aug 6, 2011, 11:54:46 PM8/6/11
to android-g...@googlegroups.com
こんにちは
荒田です。

連絡先の保存先の確認ですが、ドキュメントベースで確認できなかったので
プログラムを書いて確認してみました。

私の手持ちのGalaxy Sだと連絡先の保存先として以下が選択できます。
(Nexus SだとGoogleのみでした。。)
・docomo
・本体
・SIM
・Google

それぞれ保管してみてデータを読み込み、違いを見てみました。
SIMに保管したものはうまく読み取れなっかったのでそれ以外で差異を
確認してみました。

結果ですが、statusフィールドがそれぞれ異なっており以下のようになっていました。
・docomo
com.android.nttdocomo
・本体
vnd.sec.contact.phone
・Google
com.google

ですので、statusフィールドを使えば本体に保管されたメールアドレスを
限定できそうですが、ソースとなる情報を見つけられませんでした。
また、本体に格納される時の「vnd.sec.contact.phone」という文字列が
バージョン等に依存せずに使える値なのかもよくわかりませんでした。

status='vnd.sec.contact.phone'で条件を絞り込めば、おそらく端末内
に保管された情報だけ取得できると思いますが、上記のように裏がとれている
わけではありませんので、その点だけ注意していただければと思います。

だれか、このあたりの情報をお持ちじゃないでしょうか?

2011年8月4日16:55 Kishimoto Tadashi <kin...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

Kishimoto Tadashi

unread,
Aug 7, 2011, 9:09:11 PM8/7/11
to 日本Androidの会
荒田さん

コメント、ありがとうございます。
今から確認してみます。

取り急ぎお礼まで。
Reply all
Reply to author
Forward
0 new messages