Honeycomb/ICSのアドレス形式

私は、デバイス上の連絡先情報から郵送先アドレスを取得できるアプリを持っています。私は以下のようなコードを使用して、連絡先APIを使用して、番地、郵便番号、市などの情報を取得します。私は別の行にアドレスを表示し、ユーザーはそれを受け入れるか、必要に応じて変更することができます。

String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
String[] params = new String[]{id, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; 
Cursor addrCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, where, params, null); 
...

while(addrCur.moveToNext()) {
    String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
    String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
    String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
    String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
    String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
    ...
}       
addrCur.close();

これはAndroid 2.2/2.3ではうまくいきましたが、3.x以降では、返されるアドレス全体がSTREETフィールドに改行を含む単一の文字列として書式設定できることに気付きました。これは、連絡先/アドレスがデバイス上に作成されたときに発生します。 Gmailから連絡先を同期すると、アドレスが正しく取得されます(同期された情報が正しいフィールドに保存されていると思われます)。私はこれらのタイプの住所のための個々のデータ要素(通り、郵便番号、等)を得る方法を見ることができません。これは可能ですか?私は使用する必要がある新しいAPIはありますか?

2

1 答え

私はそれを行う方法を見つけていない。私が見つけた唯一の回避策は、 ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS 列をカーソルから取得し、別の標準の書式設定を前提にして完全な書式付きアドレスを取得することです。 Honeycomb/ICS Contactsアプリでフリーフォームのテキストボックス以外のアドレスを入力する方法はないので、連絡先アプリはデータベースに保存する前に自動的に解析しないでください。

うまくいけば、私は間違っているし、それを行う方法があります - しかし、私はまだそれを見つけていません。

1
追加された