2012年5月9日水曜日

Cordovaでの連絡先取得の問題がほぼ解決

連絡先一覧の取得ができず悩んでいましたが、
単純にfilterのオプションにある複数の連絡先取得の指定をしていなかった為でした。

options.multiple = true;

この指定を入れるだけで複数件が取得できるようになりました。

続けて、メールアドレスの取得に挑戦しました。
フィールドにemailsを指定します。

var fields = ["displayName","emails"];

取得したcontactに入るemailsは配列の形で取得される点に注意。

emList=contacts[i].emails;
for (var k=0; k<emList.length; k++){
    alert(emList[k].value);
}

ここでまた別の問題としてフィルタの処理がうまく動かなくて悩んでいます。

とりあえず、displayNameでの絞込みが効かないみたいで、フィールドをdisplayNameではなくnameにし、取得の際はcontacts[i].name.formattedみたいな形にすることで絞込みができました。
が、どうやら全角文字での絞込みができないみたいでそれがまだ未解決の状態です。

まだまだ悩み中。

追記)
と思ったら、ヘッダにutf-8の指定をしただけであっさり解決しました。
javascript側にだけ指定をしてたのでそのせいでしょうかね。

<meta charset="utf-8" />

プチまとめ)
・日本語訳のドキュメントは古いPhoneGap向けのものなので注意。
 「navigator.service.contacts.find」のserviceの部分が不要。
・iOSでcontact.findするときはdisplayNameの使用は避ける。nameを使うのがおそらく無難。
・ヘッダでutf-8の指定をしておかないと全角文字での絞込みができない。
・「(options名).multiple = true; 」の指定がないと結果が1件しか返ってこない。

ようやく連絡先一覧の取得ができるようになった感じです。

0 件のコメント:

コメントを投稿