如何检测Android手机通讯录应用支持结构化邮政地址?

时间:2014-07-18 14:16:17

标签: android android-intent android-contacts

三星galaxy S4和一些设备仅在使用 Intent Action_Insert

时支持结构化邮政
ArrayList<ContentValues> data = new ArrayList<ContentValues>();
...
ContentValues name = new ContentValues();
name.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
name.put(StructuredPostal.STREET, bundle.getString(StructuredPostal.STREET));
name.put(StructuredPostal.CITY, bundle.getString(StructuredPostal.CITY));
name.put(StructuredPostal.REGION, bundle.getString(StructuredPostal.REGION));
name.put(StructuredPostal.NEIGHBORHOOD, bundle.getString(StructuredPostal.NEIGHBORHOOD));
name.put(StructuredPostal.POSTCODE, bundle.getString(StructuredPostal.POSTCODE));
name.put(StructuredPostal.COUNTRY, bundle.getString(StructuredPostal.COUNTRY));
data.add(name);
Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
intent.putExtra(ContactsContract.Intents.Insert.NAME, contactName);

if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB)
  intent.putParcelableArrayListExtra(Insert.DATA, data);
else
  intent.putExtra(ContactsContract.Intents.Insert.POSTAL, address);

现在,在4.2上运行的Galaxy S3不支持结构化地址,也不使用上面的代码显示地址。

那么我如何找到一个设备是否支持结构化邮政地址,以便我可以为它们提供支持?

注意:如果我使用intent.putExtra(ContactsContract.Intents.Insert.POSTAL, address);,Galaxy S3会显示使用intent.putParcelableArrayListExtra(Insert.DATA, data);的地址,而这个S3无法显示地址。

1 个答案:

答案 0 :(得分:1)

尝试保存结构化字段(对于支持它们的电话)以及StructuredPostal.FORMATTED_ADDRESS。不过,您需要自己进行格式化。这似乎是VCardEntry的作用。