gpt4 book ai didi

android - Honeycomb/ICS 中的地址格式

转载 作者:行者123 更新时间:2023-11-29 02:07:38 25 4
gpt4 key购买 nike

我有一个应用程序可以从设备上的联系信息中检索邮寄地址。我使用类似于下面的代码使用联系人 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 吗?

最佳答案

我还没找到办法。我发现的唯一解决方法是通过从光标中获取 ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS 列来获取完整的格式化地址,然后尝试将其拆分为几种不同的标准格式。除了使用自由格式的文本框外,无法在 Honeycomb/ICS 联系人应用程序中输入地址,因此我猜联系人应用程序在将其存储到数据库之前不会尝试自动解析它。

希望我是错的,有办法做到这一点 - 但我还没有找到它。

关于android - Honeycomb/ICS 中的地址格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9160487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com