取得し住所連絡先を使用Android SDK
-
13-09-2019 - |
質問
いを取り出そうとすると、連絡先の氏名、電話番号、住所からのandroid連絡先一覧です。の名称及び電話からの直前進ではあるが、住所のようなアクセス可能で、1.6apiです。
は誰かを把握することは可能ですか連絡先の住所?ものが全く新しいapi2.0にアクセスしてください。どうかこのスクフォースメンバーであるのapiを利用1バイナリー.それとも可能です。
解決
前のAndroid 2.0へのあなたは、
渡す必要があります郵便アドレスを取得するためにContacts.ContactMethods.CONTENT_URIを照会する必要がありますContacts.ContactMethods.PERSON_ID + "=? and " + Contacts.ContactMethods.KIND + "=?"
選択のためとselectArgsパラメータの
new String[] { personId, Integer.toString(Contacts.KIND_POSTAL) }
2.0の時点で、あなたがはるかに複雑である新しいContactsContractを使用するために連絡することができますいくつかのソース間で今、情報を集約。新しいAPIのいくつかの良いグループへの投稿は、こことされています< href = "http://groups.google.com/group/android-developers/browse_thread/thread/133816827efc8eb9" のrel = "nofollowをnoreferrer">ここを。
同じバイナリから複数のプラットフォームAPIを対象とする推奨される方法は、リフレクションを使用することである(これは、ブログ記事で)。あなたは1.6で以下のマニフェストで、アプリのターゲットが、アンドロイド2.0のjarファイルを拾うためにビルド・パスを設定する場合は、反射を必要とせずに2.0 APIを呼び出すことができますが、私が発見しました。あなただけ2.0のクラスに依存しているクラスは1.6デバイスにロードされていないか、クラスローダがスローされますことは非常に注意する必要があります。これを避けるために、あなたは依存関係(またはGuiceのようなDIフレームワーク)を破るために、工場のいくつかの並べ替えを使用する必要があります。この投稿さらなる議論のために。
他のヒント
コアンソニー Forloney(以下の のウェブサイトへのリンク読み方連絡先"、便利です。のコンテンツの このリンク のコードの読み方"住所"、これらの線は助かります!このフェッチの住所については、照会用の StructuredPostal contants.
Cursor postals = getContentResolver().query(
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = "
+ contactId, null, null);
int postFormattedNdx = postals.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS);
int postTypeNdx = postals.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE);
int postStreetNdx = postals.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET);
while (postals.moveToNext()) {
String postalData = postals.getString(postFormattedNdx);
postalCat = postalCat+ postalData+ ", [";
postalData = String.valueOf(postals.getInt(postTypeNdx));
postalCat = postalCat+ postalData+ "], ";
postalData = postals.getString(postStreetNdx);
postalCat = postalCat+ postalData+ " ";
}
postals.close();
残りの このリンク は確かにのフェッチの名前と電話をした場合の訂正"の電話番号"に間違いのboolean値をbooleanな解析を適切に)
私の電話気圧ではなく、はここを持つリンクですあなたに似た質問。
私はこのことができますかあなたは正しい方向にポイントを願っています。
EDIT:
私が述べていた、私は、少なくともあなたが探していたものを、これはおそらく後半に吸い上げられ、すでにあなたの答えを持っていますが、ここであなたはまだあなたが必要なものを、いくつかを探していた場合にはより多くの情報があるの方に私の元の答えを編集します探すためには、 ContactsContract.CommonDataKinds.StructuredPostal にあるとあなたはアドレスに関する具体的な詳細を抽出することができます。こちらアンドロイド2.0のを用いた例として、いくつかの例が抽出示しますあなたはすでにそれを考え出したていない場合は連絡先からの情報は、つまります。
幸運ます。
これは、私は、Android 2.3.3でそれをやった方法です。
String where = ContactsContract.Data._ID + " = "
+ uriData.getLastPathSegment()
+ " AND ContactsContract.Data.MIMETYPE = '"
+ ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE
+ "'";
String[] projection = new String[] { StructuredPostal.STREET,
StructuredPostal.CITY,
StructuredPostal.REGION,
StructuredPostal.POSTCODE,
StructuredPostal.COUNTRY};
Cursor cursor = getContentResolver().query( ContactsContract.Data.CONTENT_URI,
projection,
where,
null,
null);
String strOutput = "";
if (cursor.moveToFirst())
{
strOutput += "\n" + cursor.getString(0);
strOutput += "\n" + cursor.getString(1);
strOutput += "\n" + cursor.getString(2);
strOutput += "\n" + cursor.getString(3);
strOutput += "\n" + cursor.getString(4);
}
cursor.close();
注: uriData
がアドレスを表示する意図をキャプチャすることによって得ています。
これは、ここに解決されます:何連絡先/連絡先カードでの「ビューの作業アドレス」に関連した意図はありますか?の
その代わり_ID
の、ContactsContract.Data.CONTACT_ID
を試して自由に感じる。