BadParcelableException:获取已选择联系人姓名时的ClassNotFoundException

时间:2011-04-05 12:02:02

标签: android contacts contactscontract

我使用“联系人”选择器获取特定联系人的姓名。对于Eclair以及后来我使用:

startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), CONTACT_PICKER_RESULT);

并在onActivityResult()中我只是这样做:

final String contactName = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);

这在Motoblur上工作正常,我得到了这个例外:

android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.motorola.blur.provider.contacts.IdentityModel
    at android.os.Parcel.readParcelable(Parcel.java:1883)
    at android.os.Parcel.readParcelableArray(Parcel.java:1922)
    at android.os.Parcel.readValue(Parcel.java:1825)
    at android.os.Parcel.readMapInternal(Parcel.java:2008)
    at android.os.Bundle.unparcel(Bundle.java:208)
    at android.os.Bundle.getString(Bundle.java:1034)
    at android.content.Intent.getStringExtra(Intent.java:3399)

还有另一种方法可以获得可以在Motoblur上使用的名称吗? Motoblur有解决方法吗?

提前致谢,
纳斯

1 个答案:

答案 0 :(得分:2)

使用ContentResolver工作正常。似乎Intent.EXTRA_SHORTCUT_NAME在所有手机上都无法可靠地工作(我也听说有关它不能完全在HTC上运行的报道)。