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

Aru*_*thi 5 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);
Run Code Online (Sandbox Code Playgroud)

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

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

注意:如果我使用intent.putExtra(ContactsContract.Intents.Insert.POSTAL, address);Galaxy S3显示地址,那么使用intent.putParcelableArrayListExtra(Insert.DATA, data);此S3时无法显示地址.

rds*_*rds 1

尝试像您一样保存结构化字段(对于支持它们的手机)以及StructuredPostal.FORMATTED_ADDRESS. 不过,您需要自己进行格式化。VCardEntry似乎就是这么做的。