Android 内容解析器在插入DATA.Content\u URI时引发空指针异常
我使用下面的代码在Android联系人中添加自定义Mimetype。此代码在下面的行中抛出错误 getContentResolver().insert(ContactsContract.Data.CONTENT\u URI,值)强> java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“long java.lang.long.longValue()”Android 内容解析器在插入DATA.Content\u URI时引发空指针异常,android,android-contentprovider,android-contacts,contactscontract,Android,Android Contentprovider,Android Contacts,Contactscontract,我使用下面的代码在Android联系人中添加自定义Mimetype。此代码在下面的行中抛出错误 getContentResolver().insert(ContactsContract.Data.CONTENT\u URI,值) java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“long java.lang.long.longValue()” public static final String MIMETYPE_FORMALITY = "vnd.and
public static final String MIMETYPE_FORMALITY = "vnd.android.cursor.item/ABCAPPLICATION";
public MainActivity saveFormality() {
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.DATA1, this.getFormality() ? "1" : "0");
int mod = getContentResolver().update(
ContactsContract.Data.CONTENT_URI,
values,
ContactsContract.Data.CONTACT_ID + "=" + "2231" + " AND "
+ ContactsContract.Data.MIMETYPE + "= '"
+ MIMETYPE_FORMALITY + "'", null);
if (mod == 0) {
values.put(ContactsContract.Data.CONTACT_ID, Long.valueOf("2231"));
values.put(ContactsContract.Data.MIMETYPE, MIMETYPE_FORMALITY);
**getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);** // This line was throwing null pointer exception.
Log.v("mimeType", "Inserted");
}
return this;
}
我从Stackoverflow post复制了这段代码,但它不起作用。有人能解释一下它抛出这个错误的原因吗 无法保证这会解决您的问题,因为您尚未发布完整的堆栈跟踪,但一般来说,您无法将行插入到
数据中。CONTENT\u URI
通过CONTACT\u ID
,contacts contract
数据库的工作方式如下:
联系人
-每个条目代表一个联系人,并将一个或多个联系人分组
RawContacts
-每个条目表示由某些SyncAdapter
(例如Whatsapp、Google、Facebook、Viber)同步的联系人的数据,这将多个数据条目分组数据
-关于联系人、电子邮件、电话等的实际数据。每一行都是属于单个联系人的一段数据
Data.RAW\u CONTACT\u ID=…
进入,无需指定CONTACT\u ID
,因为RawContact
已经属于某个CONTACT
这也是对现有数据进行更新的相同方法
作为旁注:
- 报告崩溃时,始终发布完整堆栈跟踪
- 将代码减少到显示崩溃的最小代码,这样其他内容(如从方法返回活动)就不会混淆
公共主活动保存形式()??返回活动实例的公共函数?或者是什么?会发生什么?您在哪个类中使用此代码?从Stackoverflow post复制了此代码。当然,你应该发布一个链接。也许你用错代码了。我们想查一查,非常感谢。由于我使用的联系人ID,这一切都搞砸了。原始联系人ID解决了我的问题。非常感谢。