2012-02-20 29 views
1

私のアプリケーションから新しい連絡先を動的に追加する必要があります。 AccountManager getAccountsメソッドを使用してすべての電話アカウントを一覧表示しますが、天気、株価などのアカウントを取得します 連絡先アカウントのみを取得するにはどうすればよいですか?Androidの連絡先のアカウント

答えて

0

実際にAPIを使用してこれを行うには良い方法はありませんが、私たちが最も正確であると判明した方法は、コンタクトを格納するために使用されるアカウントを逆に考えることでした。

これはちょっと粗いですが、かなり良い結果が得られます(リストをキャッシュし、毎回行う必要はありません)。

// Pseudo-code 
for contact in RawContacts 
    uniqueAccountTypes.put(contact.account) 
for accountType in uniqueAccountTypes 
    uniqueAccountsWithContacts.putAll(accountManager.getAccountsByType(accountType)) 

上記のコードは少しオフになる場合もありますので、私は、今のアクセスに連絡先データベースのコピーを持っていないが、コンセプトは明確にする必要があります。さらに明確にする必要があるかどうかを教えてください。

+0

この方法は、すべての場合に機能しません。デフォルトの連絡先アプリはそれを行うことができるので、別の方法が必要です。 –

0

同様の状況がありました。

少し検索がAccountManagerを、この方法を見つけた後:ここ

getAccountsByTypeAndFeatures(); 

あなたが「service_mail」、「service_talk」などのように、パラメータの機能を設定している場合、あなたは電子メールをサポートしているアカウントを取得し、チャットします、したがって、これらのアカウントも連絡先をサポートします。

UPDATE

"service_ahは、" アカウントのデバイスがリンクしている与えます。