创建插入意图的代码如下
final Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, "some name");
final ArrayList<ContentValues> contactData = ...; // Populate array list here
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
在 Galaxy Nexus、Nexus 4、Nexus 7、Nexus 10 上运行此代码没有问题。但在 HTC One People 应用程序在 HTC 自定义代码深处崩溃:
06-30 13:34:57.589: E/AndroidRuntime(27942): Caused by: java.lang.NullPointerException
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.model.EntityModifier.getEntryCountByType(EntityModifier.java:1056)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.model.EntityModifier.isTypeAllowed(EntityModifier.java:1047)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.model.EntityModifier.adjustType(EntityModifier.java:1003)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.model.EntityModifier.parseValues(EntityModifier.java:942)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.model.EntityModifier.parseExtras(EntityModifier.java:691)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.ui.EditContactActivity2$AddContactTask.selectAccount(EditContactActivity2.java:5014)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.ui.EditContactActivity2$AddContactTask.selectAccount(EditContactActivity2.java:4978)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.ui.EditContactActivity2$AddContactTask.doInBackground(EditContactActivity2.java:4479)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.ui.EditContactActivity2$AddContactTask.doInBackground(EditContactActivity2.java:4391)
06-30 13:34:57.589: E/AndroidRuntime(27942): at com.android.htccontacts.util.WeakAsyncTask.doInBackground(WeakAsyncTask.java:45)
06-30 13:34:57.589: E/AndroidRuntime(27942): at android.os.AsyncTask$2.call(AsyncTask.java:264)
06-30 13:34:57.589: E/AndroidRuntime(27942): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
当我在崩溃后打开 People 应用程序时,所有插入的信息都在那里。所有字段都正确,它们的类型也正确。除了不允许用户在保存新联系人之前编辑信息之外,看到崩溃只是很烦人。
我已经看到了这个响应,只是我的问题似乎有所不同:我总是为每条记录传递记录类型。崩溃后,我可以看到我在 People 应用程序中传递的类型。
如果有人知道如何处理这个错误EntityModifier.getEntryCountByType()
,你能分享你的经验吗?