如何检测 android 手机联系人应用程序支持结构化邮政地址?
Posted
技术标签:
【中文标题】如何检测 android 手机联系人应用程序支持结构化邮政地址?【英文标题】:How to detect an android phone contacts app supports Structured Postal Address? 【发布时间】:2014-09-09 17:15:24 【问题描述】:Samsung 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】:尝试保存结构化字段(对于支持它们的手机)以及StructuredPostal.FORMATTED_ADDRESS
。不过,您需要自己进行格式化。 VCardEntry 似乎就是这样做的。
【讨论】:
以上是关于如何检测 android 手机联系人应用程序支持结构化邮政地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 android 手机中提取联系人并将其存储/导入到模拟器中的应用程序中?
如何通过Android手机联系人列表中的代码添加联系人详细信息..?